私はそれを解決しました!基本的には、doRollover
のメソッドTimedRotatingFileHandler
をオーバーライドする必要があります。また、この新しい親クラスでは、ロギングインスタンスを渡してヘッダーのコンテンツを設定するためにいくつかのコードが必要です。これにより、同様の状況に遭遇した人々の広範な例が得られます。
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)
出典
2015-01-08 13:59:34
Gio
doRolloverをオーバーライドすると機能しますか? –
はい、それは完了する必要がありました!私は以下の答えを掲載しました。 – Gio