Ho un dict LOG_SETTINGS che assomiglia:utilizzando dictConfig nella registrazione python, è necessario creare un logger con un file diverso da quello definito in dict.
LOG_SETTINGS = {
'version': 1,
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'level': 'INFO',
'formatter': 'detailed',
'stream': 'ext://sys.stdout',
},
'file': {
'class': 'logging.handlers.RotatingFileHandler',
'level': 'INFO',
'formatter': 'detailed',
'filename': '/tmp/junk.log',
'mode': 'a',
'maxBytes': 10485760,
'backupCount': 5,
},
},
'formatters': {
'detailed': {
'format': '%(asctime)s %(module)-17s line:%(lineno)-4d ' \
'%(levelname)-8s %(message)s',
},
'email': {
'format': 'Timestamp: %(asctime)s\nModule: %(module)s\n' \
'Line: %(lineno)d\nMessage: %(message)s',
},
},
'loggers': {
'extensive': {
'level':'DEBUG',
'handlers': ['file',]
},
}
}
Nel mio codice faccio la seguente:
logging.config.dictConfig(LOG_SETTINGS)
logger = logging.getLogger('extensive')
logger.info("This is from Runner {0}".format(self.default_name))
logger2 = logging.getLogger('extensive')
logfile = logging.FileHandler("test.log")
logger2.addHandler(logfile)
logger2.info("This is from Runner {0} to the new file.".format(self.default_name))
Ma l'uscita è ancora scritto nel file di registro originale definito LOG_SETTINGS. Quello che sto cercando è avere la possibilità di dire: logger2.replaceHandler (logfile) piuttosto che addHandler.
C'è un modo per farlo?
Grazie. Un'altra cosa che ho trovato è il 'removeHandler' [collegamento] (http://docs.python.org/library/logging.html#logging.Logger.removeHandler), ma non sono sicuro di cosa sia l''hdlr'? . – John
per 'handler', è un oggetto gestore di registrazione. – iMom0
Dovresti imparare ad accettare e votare le risposte che ti sono state utili – iMom0