日志模块运行时间问题
今天复习了一下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定义的文件名
最后,在间隔超过一分钟后运行这个代码,就会生成备份文件,备份文件的内容,就是这五分钟之内生成的日志,以第一条日志生成的时间作为文件名

浙公网安备 33010602011771号