При использовании модуля 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 logger (twisted.python.logfile.DailyLogFile
)?