在 python 中每次轮换日志时采取行动
Take an action each time a log is rotated in python
我想记录一行描述记录器创建的每个日志文件的记录信息。
目前我正在使用一个单独的记录器进程,它将一直 运行。它从队列中接收信息并将其写入日志。许多模块会将信息传递到此日志记录队列。
我当前的示例代码是:
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
第一次写入日志文件。
我该怎么做?
或者换句话说,如何在程序中知道日志何时轮换?
也许您可以简单地覆盖 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)
我想记录一行描述记录器创建的每个日志文件的记录信息。
目前我正在使用一个单独的记录器进程,它将一直 运行。它从队列中接收信息并将其写入日志。许多模块会将信息传递到此日志记录队列。
我当前的示例代码是:
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
第一次写入日志文件。
我该怎么做?
或者换句话说,如何在程序中知道日志何时轮换?
也许您可以简单地覆盖 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)