Lyn*_*Lee 4 python logging rotation
我有一个名为 Poller.log 的文件,它始终附加日志详细信息。我希望这个日志文件每天轮换一次,并且限制为 30 天。因此,该代码运行良好。
现在我希望已旋转的日志位于一个文件夹中(即logs/poller.log.2011-03-04_15-36)。是否有办法指示应在何处创建此旋转文件?
这个Python脚本将由Cron执行。
import logging
import logging.handlers
LOG_FILENAME = '/home/stackoverflow/snmpdata/poller.log'
# Set up a specific logger with our desired output level
poll_logger = logging.getLogger('pollerLog')
# Add the log message handler to the logger
log_rotator = logging.handlers.TimedRotatingFileHandler(LOG_FILENAME, when='d', interval=1, backupCount=30, encoding=None, delay=False, utc=False)
poll_logger.addHandler(log_rotator)
# Roll over on application start
poll_logger.handlers[0].doRollover()
Run Code Online (Sandbox Code Playgroud)
Python 日志处理程序不允许轻易做到这一点。您可能有两种方法来实现这一目标:
最简单的方法是将 LOG_FILENAME 设置为已经在 messages/poller.log 中,如果您想在其他任何地方访问 poller.log,请使用符号链接:)
从 TimedRotatingFileHandler 开始创建您自己的处理程序,并从 TimedRotatingFileHandler 类 /usr/lib/python2.X/logging/handlers.py 复制/粘贴 doRollover() 。并改变:
dfn = self.baseFilename + “.” + time.strftime(self.suffix, timeTuple)
到
dfn = os.path.join('logs', os.path.basename(self.baseFilename)) + "." + time.strftime(self.suffix, timeTuple)