日志模块运行时间问题

今天复习了一下logging这个模块,因为之前对日志运行的间隔时间并不能准确理解,今天总算有所收获

首先,知道 TimedRotatingFileHandler 这个类实例化时参数的意义:

filename 是定义生成日志的文件名

when 时间单位 S/秒 M/分 H/小时 D/天 W/星期 interval=0代表星期一

interval 时间间隔

backupCount 备份文件的数量,超出这个数量自动删除时间最久的那个文件

encoding 文件编码

import logging
from logging import handlers

logger = logging.getLogger()  # 实例化一个logger对象
logger.setLevel(logging.DEBUG)  # 设置日志级别
cl = logging.StreamHandler()  # 负责往控制台输出
bl = handlers.TimedRotatingFileHandler(filename='a.log', when='M', interval=1, backupCount=3, encoding='utf-8')
fmt = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s:%(message)s')
cl.setFormatter(fmt)
bl.setFormatter(fmt)
logger.addHandler(cl)
logger.addHandler(bl)
logging.debug('debug级别')
logging.info('info级别')
logging.warning('warn级别')
logging.error('error级别')

 

可以看出,代码中定义的一分钟生成一次日志文件,之前没有理解这个时间间隔的概念,一直以为代码有问题

其实,时间间隔是以该代码最后一次的运行时间为基准计算的,也就是说,如果你在五分钟之内,一直运行这个代码,

但是期间间隔时间都没有超过一分钟,那么就不会生成新的日志文件,生成的日志都会在原始日志文件里,即filename定义的文件名

最后,在间隔超过一分钟后运行这个代码,就会生成备份文件,备份文件的内容,就是这五分钟之内生成的日志,以第一条日志生成的时间作为文件名

posted @ 2018-06-15 14:37  飒蓝  阅读(193)  评论(0)    收藏  举报