为什么我的TimedRotatingFileHandler不在午夜轮换?

cop*_*360 9 python logging

这是我的配置文件:

[loggers]
keys=root

[handlers]
keys=TimedRotatingFileHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=TimedRotatingFileHandler

[handler_TimedRotatingFileHandler]
class=handlers.TimedRotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('driver.log', 'midnight', 1, 30)

[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我设置并使用这样的记录器:

import logging
import logging.config

logging.config.fileConfig('logging.conf')
logging.info('Some message...')
Run Code Online (Sandbox Code Playgroud)

消息记录到我指定的文件(driver.log),但午夜轮换永远不会发生.

该过程必须在午夜运行才能进行轮换吗?这是一个批处理过程,我每15分钟运行一次,它实际上从未在午夜运行.

cop*_*360 18

答案是该过程必须始终运行才能使其正常工作.

来自http://bytes.com/topic/python/answers/595931-timedrotatingfilehandler-isnt-rotating-midnight:

当日志记录过程在午夜之前创建处理程序并在午夜之后进行以该处理程序为目标的日志记录调用时,应该进行旋转.