Po przeczytaniu documentation on logging
, wiem, że mogę użyć kodu tak, aby wykonać proste rejestrowanie:Jak zmienić format wiadomości dziennika Pythona dla każdego rejestratora?
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()
jednak zdałem sobie sprawę, nie wiem jak zmienić format komunikatów dziennika na podstawie na rejestratorze , ponieważ basicConfig
jest funkcją na poziomie modułu. Ten kod służy do tworzenia różnych rejestratorów o różnych poziomach, nazwach itp., Ale czy istnieje sposób na zmianę formatu tych komunikatów dziennika na podstawie każdego rejestratora, w sposób podobny do 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 i ponownie (niestety nie) do dodawania kodu. Zmieniłem to również w mojej [poprzedniej odpowiedzi] (http://stackoverflow.com/a/11581118/869912) na pytanie dotyczące rejestrowania i działa idealnie. –
Zawsze jestem zaskoczony, że nie jest tak prosty, jak 'logger = logging.getLogger ('mylogger') logger.basicConfig (level = ..., format = ...)' ... – theartofrain
Działa świetnie! Dzięki! – Eli