import logging
from logging.handlers import RotatingFileHandler
log_file = "log/log"
datetime_format = "%Y-%m-%d %H:%M:%S"
per_log_file_max_size = 10240
backup_count = 3
log_format = "%(asctime)s %(filename)sline:%(lineno)d %(message)s"
rotate_file_handler = RotatingFileHandler(log_file, maxBytes=per_log_file_max_size,
backupCount=backup_count)
rotate_file_handler.setLevel(logging.NOTSET)
formatter = logging.Formatter(log_format)
rotate_file_handler.setFormatter(formatter)
logging.getLogger('').addHandler(rotate_file_handler)
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
logging.error('error')
输出:
2017-02-10 18:00:26,408 test.pyline:32 This is warning message
2017-02-10 18:00:26,408 test.pyline:33 error
2017-02-10 18:00:26,408 test.pyline:34 critical
设置的日志级别是NOSET,实际上是WARNING
求解释:
因为
NOSET
日志级别的效果是这样的:因为
logging.getLogger('')
(root logger)的默认日志级别是WARNING
不是NOSET
,所以 rotate_file_handler 将使用这个WARNING
的日志级别。将 logging.getLogger('') 的日志级别也改为
NOTSET
就可以了:参考:
https://docs.python.org/3/lib...