मैंने इसे हल कर लिया है! असल में जो कुछ करने की जरूरत है 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)
क्या यह काम करता है जब आप 'डोलरओवर' ओवरराइड करते हैं? –
हां वह सब कुछ करने की ज़रूरत थी! मैंने नीचे जवाब पोस्ट किया है। – Gio