编辑:
看起来其他人也遇到了与TimedRotatingFileHandler
相关的类似问题。
Python TimedRotatingFileHandler在午夜不会旋转,直到有新内容写入日志文件。如何解决?
为什么我的TimedRotatingFileHandler在午夜不会旋转?
显然,只有在日志中发生某些活动时,才会进行日志轮换。是否有一种方法可以使用内置处理程序实现我想要的定期旋转功能,而无需创建自定义旋转器?
原始帖子:
我正在使用Python的logging
模块的TimedRotatingFileHandler
来定期轮换我的日志。
我已在logging.conf中为我的应用程序的记录器和处理程序指定了配置,如下所示:
[logger_worker]
level=DEBUG
propogate=0
qualname=worker
handlers=workerHandler
[handler_workerHandler]
class=handlers.TimedRotatingFileHandler
level=DEBUG
formatter=standardFormatter
args=("/var/log/app/worker.log","M",1,30,None,False,False)
- 注意:出于测试目的,我已将处理程序配置为每分钟轮换日志,但理想情况下,日志应在午夜每天轮换一次。
在我的应用程序中,我是这样创建记录器的:
logging.config.fileConfig("logging.conf")
log = logging.getLogger("worker")
log.debug('Hello world')
它并没有按照我的预期工作:
- 它没有旋转所有的日志
- 它没有按照配置的每分钟旋转
观察日志目录的ls -l
输出:
-rw-r--r-- 1 root root 0 Apr 19 18:22 dpv.log
-rw-r----- 1 root root 5092 Apr 20 11:47 emperor.log
-rw-r--r-- 1 root root 88939 Apr 20 11:47 uwsgi.log
-rw-r--r-- 1 root root 494 Apr 20 11:46 worker.log
-rw-r--r-- 1 root root 45906 Apr 20 02:08 worker.log.2016-04-20_02-08
-rw-r--r-- 1 root root 494 Apr 20 11:34 worker.log.2016-04-20_11-34
-rw-r--r-- 1 root root 494 Apr 20 11:36 worker.log.2016-04-20_11-36
-rw-r--r-- 1 root root 494 Apr 20 11:44 worker.log.2016-04-20_11-44
我做错了什么?即使没有任何内容被写入日志,也可以按计划轮换日志吗?
log.debug('Hello world')
? - qvphamlogrotate
。 - qvphamlogrotate
作为替代方案... 感谢@julivico。 - tamjd1