标签:es2017 message 技术分享 期望 因此 hand ges res 运行
需求:
程序每天晚上8点和10点定时运行,期望日志按日期记录
添加Handler部分代码如下:
formatter = logging.Formatter("%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s", "%Y-%m-%d %H:%M:%S") log_file_handler = logging.handlers.TimedRotatingFileHandler(filename="loaddata.log", when="D", interval=1, backupCount=30) log_file_handler.setFormatter(formatter) logging.getLogger().addHandler(log_file_handler)
查看过很多资料,代码并没有问题
现象:
只有一个日志(loaddata.log)文件被生成,其中会有所有天的日志,期望的loaddata.log.YYYY-mm-dd并没有看到
研究:
追查代码,看到handlers.py(Python自带模块)中是这样计算日志文件重新生成时间的
下面的 result 是下一次rollover的时间,上面的 t 是handler初始化时获取的起始时间。
可以看到logging模块得到的结果是这样的:
又因为,我每天要在20点和22点各执行一次,并且每次都有日志写入。因此:
所以:导致的结果就是。。。永远不滚动!/(ㄒoㄒ)/~~
解决办法:
创建Handler时,把when=‘D‘改成when=‘MIDNIGHT‘可解决这个问题。因为MIDNIGHT指的是,只要过了0点就会滚动。
实际应用中遇到TimedRotatingFileHandler不滚动的问题
标签:es2017 message 技术分享 期望 因此 hand ges res 运行
原文地址:http://www.cnblogs.com/qhlblog/p/7998454.html