我在长时间运行的应用程序中使用TimedRotatingFileHandler
,设置为在午夜剪切日志文件。但是,如果应用程序没有操作,则日志文件可能不会在午夜或任何时候关闭它。
强制日志文件在午夜(或任意时间)剪切的最简单方法是什么?我宁愿不用一些内部时间依赖更新应用程序代码。我最初的想法是编写一个由cron作业触发的脚本来获取应用程序使用的logger
实例,并在午夜触发翻转。可以这样做吗?否则,记录器是否可以配置为在午夜自动切换?
import logging
logger = logging.getLogger("foo")
handler = logging.handlers.TimedRotatingFileHandler("test.log" , 'midnight', 1, backupCount=5, utc=True)
logger.addHandler(handler)
while True:
if action_required():
logger.info("Something happened")
sleep(5)
#!/usr/bin/env python
import logging
app_logger = logging.getLogger("foo")
app_logger.handlers[0].doRollover()