0

我想记录一行描述记录器创建的每个日志文件的记录信息。

目前我正在使用一个单独的记录器进程,它将一直运行。它从队列接收信息并将其写入日志。许多模块将信息传递到这个日志队列。

我当前的示例代码是:

import logging
import time

from logging.handlers import TimedRotatingFileHandler as rotate

def info_log(log_queue):
    logger = logging.getLogger("My Log")
    logger.setLevel(logging.INFO)

    handler = rotate("log/info.log", when="D", interval=30, backupCount=13)
    logger.addHandler(handler)

    desc_string = "yyyy/mm/dd-HH:MM:SS \t name \t country \n"
    logger.info(desc_string)

    while True:
        result=log_queue.get().split("#")
        logger.info(result[0] + "\t" result[1] + "\t" + result[2] + "\n")

每次轮换日志时,我都希望desc_string第一次写入日志文件。
我怎样才能做到这一点?

或者换句话说,如何在程序中知道日志何时轮换?

4

1 回答 1

2

也许您可以简单地覆盖 TimedRotatingFileHandler 的 doRollover 方法?

class CustomFileHandler(TimedRotatingFileHandler):
  def doRollover(self):
     super().doRollover()
     self.stream.write(desc_string)

# to use it 
handler = CustomFileHandler("log/info.log", when="D", interval=30, backupCount=13)
logger.addHandler(handler)
于 2016-06-17T07:15:25.733 回答