# _*_coding:utf-8_*_ import logging from logging.config import fileConfig fileConfig('log.conf') root= logging.getLogger(name="root") log_1= logging.getLogger(name="log_1") log_2= logging.getLogger(name="log_2") root.debug('root_debug') root.info('root_info') root.warning('root_warning') log_1.debug('log_1_debug') log_1.info('log_1_info') log_1.warning('log_1_warning') log_2.debug('log_2_debug') log_2.info('log_2_info') log_2.warning('log_2_warning')
程序运行后,控制台输出如下:
2019-03-29 21:43:24 root_debug
2019-03-29 21:43:24 root_info
2019-03-29 21:43:24 root_warning
a.log文件将被写入以下内容:
2019-03-29 21:43:24 main.py INFO log_1_info
2019-03-29 21:43:24 main.py WARNING log_1_warning
b.log文件将被写入以下内容:
2019-03-29 21:43:24 main.py WARNING log_2_warning
4.3 日志回滚什么是日志回滚呢?咋一听,好像不知道是什么东西。日志回滚就是按照日期或者时间(有时候甚至是日志和时间综合作用),对日志进行分割或者删除。实际开发中经常需要用到,因为随着应用的持续运行,日志文件会越来越庞大,对系统的性能产生影响,所以有必要删除早起的日志。
logging中提供了两个处理器用于日志回滚,一个是RotatingFileHandler,它主要是根据日志文件的大小进行滚动,另一个是TimeRotatingFileHandler,它主要是根据时间进行滚动。
(1)根据文件大小进行回滚
按文件大小回滚的类是RotatingFileHandler:
# -*- coding:utf-8 -*- import logging from logging.handlers import RotatingFileHandler logger = logging.getLogger('main') logger.setLevel(level = logging.INFO) # 定义一个RotatingFileHandler,最多备份三个日志文件, 每个日志文件最大1k file_handler = RotatingFileHandler(".log",maxBytes = 1*1024,backupCount = 3) file_handler.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') file_handler.setFormatter(formatter) cons_handler = logging.StreamHandler() cons_handler.setLevel(logging.DEBUG) cons_handler.setFormatter(formatter) logger.addHandler(file_handler) logger.addHandler(cons_handler) if __name__=='__main__': while True: logger.debug("debug") logger.info("info") logger.warning("warning") logger.critical("critical")