logging根据日期分割日志文件
使用的handle为logging.handlers.TimedRotatingFileHandler
通过when参数设置时间的分割单位
- S - 秒
- M - 分
- H - 小时
- D - 天
- W{0-6}-周,0-6为周一到周六,0表示周一
dictConfig文件如下
myLogger.py
import logging.config
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'default': {
'format': '%(asctime)s %(levelname)s %(name)s %(message)s'
},
},
'handlers': {
'file': {
'class': 'logging.handlers.TimedRotatingFileHandler',
'level': 'DEBUG',
'formatter': 'default',
'filename': 'log',
'when': 's', # 分割单位,秒
'encoding': 'utf-8',
},
},
'root': {
'handlers': ['file'],
'level': 'DEBUG',
},
}
def initLoggingConfig():
logging.config.dictConfig(LOGGING)
测试代码
import logging
from module.log import myLogger
if __name__ == '__main__':
myLogger.initLoggingConfig()
logger = logging.getLogger('mylogger')
logger.debug('A debug message')
# 为实现日志文件的分割效果,多打印几条日志
for i in range(100000):
logger.debug('A debug message {}'.format(i))
最终运行会创建多个文件
log
log.2021-01-30_15-27-46
log.2021-01-30_15-27-47
log.2021-01-30_15-27-48
log.2021-01-30_15-27-49
log.2021-01-30_15-27-50
log.2021-01-30_15-27-51
log.2021-01-30_15-27-52
log.2021-01-30_15-27-53
log.2021-01-30_15-27-54
log.2021-01-30_15-27-55
log.2021-01-30_15-27-56