Dopo aver letto il documentation on logging
, so che posso utilizzare il codice come questo per eseguire la registrazione semplice:Come si modifica il formato di un messaggio di registro Python su base per-logger?
import logging
def main():
logging.basicConfig(filename="messages.log",
level=logging.WARNING,
format='%(filename)s: '
'%(levelname)s: '
'%(funcName)s(): '
'%(lineno)d:\t'
'%(message)s')
logging.debug("Only for debug purposes\n")
logging.shutdown()
main()
Tuttavia, ho capito che non so come cambiare il formato dei messaggi di log su una base per-logger , dal basicConfig
è una funzione a livello di modulo. Questo codice funziona per creare diversi logger con diversi livelli, nomi, ecc., Ma c'è un modo per cambiare il formato di questi messaggi di log anche su base per-logger, in un modo simile a basicConfig
?
import inspect
import logging
def function_logger(level=logging.DEBUG):
function_name = inspect.stack()[1][3]
logger = logging.getLogger(function_name)
logger.setLevel(level)
logger.addHandler(logging.FileHandler("{0}.log".format(function_name)))
return logger
def f1():
f1_logger = function_logger()
f1_logger.debug("f1 Debug message")
f1_logger.warning("f1 Warning message")
f1_logger.critical("f1 Critical message")
def f2():
f2_logger = function_logger(logging.WARNING)
f2_logger.debug("f2 Debug message")
f2_logger.warning("f2 Warning message")
f2_logger.critical("f2 Critical message")
def main():
f1()
f2()
logging.shutdown()
main()
+1, +1 e ancora una volta (purtroppo no) per l'aggiunta del codice. L'ho modificato nella mia [risposta precedente] (http://stackoverflow.com/a/11581118/869912) a una domanda di registrazione, e funziona perfettamente. –
Sono sempre sorpreso che non sia così semplice come logger = logging.getLogger ('mylogger') logger.basicConfig (level = ..., format = ...) '... – theartofrain
Funzionante alla grande! Grazie! – Eli