[当使用logging
模块创建旋转日志文件时,我可以告诉记录器通过使用delay=True
类的TimedRotatingFileHandler
自变量来将旋转延迟到有实际数据要记录时:
import time
import logging
from logging.handlers import TimedRotatingFileHandler
if __name__ == '__main__':
handler = TimedRotatingFileHandler('logfile.log', when='midnight', delay=True)
out_fmt = '[%(asctime)s.%(msecs)03dZ] [%(levelname)s] %(message)s'
dt_fmt = '%Y-%m-%d %H:%M:%S'
logging.Formatter.converter = time.gmtime
formatter = logging.Formatter(out_fmt, dt_fmt)
handler.setFormatter(formatter)
root = logging.getLogger()
root.setLevel(logging.DEBUG)
root.addHandler(handler)
这在很少有新信息输出到日志时非常有用,例如,如果整天没有任何新信息被记录;那么您就不想在当天创建一个空的日志文件。
使用扭曲记录仪(twisted.python.logfile.DailyLogFile
)时是否可以达到相同的效果?
您可以通过重写shouldRotate
类中的DailyLogFile
函数来实现所需的行为。