gpt4 book ai didi

python - 在使用时间旋转记录器创建的每个日志文件中写入一个标题

转载 作者:太空狗 更新时间:2023-10-30 00:55:30 26 4
gpt4 key购买 nike

我制作了一个时间旋转记录器,它在午夜创建一个新的日志文件。在我的日志文件中,我想在每个文件的顶部写一个标题。我正在寻找一种有效的方法来调用一个函数,该函数在创建文件时将此 header 写入日志文件。

import logging
from logging.handlers import TimedRotatingFileHandler

# create time-rotating log handler
logHandler = TimedRotatingFileHandler(logfile, when='midnight')

# create logger
self.log = logging.getLogger('MyTimeRotatingLogger')
self.log.addHandler(logHandler)

最佳答案

我已经解决了!基本上所有需要做的就是重写 TimedRotatingFileHandlerdoRollover 方法,在这个新的父类中也需要一些代码来传递日志实例并设置标题内容。特此为遇到类似情况的人提供一个广泛的例子。

from logging.handlers import TimedRotatingFileHandler

class MyTimedRotatingFileHandler(TimedRotatingFileHandler):
def __init__(self, logfile, when, interval):
super(MyTimedRotatingFileHandler, self).__init__(logfile, when, interval)
self._header = ""
self._log = None

def doRollover(self):
super(MyTimedRotatingFileHandler, self).doRollover()
if self._log is not None and self._header != "":
self._log.info(self._header)

def setHeader(self, header):
self._header = header

def configureHeaderWriter(self, header, log):
self._header = header
self._log = log

# create time-rotating log handler
logHandler = MyTimedRotatingFileHandler(logfile, when='midnight')
form = '%(asctime)s %(name)s %(levelname)s: %(message)s'
logFormatter = logging.Formatter(form)
logHandler.setFormatter(logFormatter)

# create logger
log = logging.getLogger('MyLogger')
logHandler.configureHeaderWriter('test-header', log)
log.addHandler(logHandler)
log.setLevel(logging.INFO)

关于python - 在使用时间旋转记录器创建的每个日志文件中写入一个标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27840094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com