阅读documentation on logging
后,我知道我可以使用这样的代码进行简单的记录:如何在每个记录器的基础上更改Python日志消息的格式?
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()
但是,我意识到,我不知道如何更改日志消息的格式在每个记录器的基础,因为basicConfig
是模块级功能。此代码适用于创建具有不同级别,名称等的不同记录器,但是有没有办法以每个记录器为基础更改这些日志消息的格式,类似于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见http://docs.python.org/howto/logging-cookbook.html#multiple-handlers-and-formatters和+1再次(遗憾的是没有)添加代码。我编辑它到我的[以前的答案](http://stackoverflow.com/a/11581118/869912)以记录问题以及它完美的作品。 – 2012-07-20 15:50:55
我总是感到惊讶,它不像'logger = logging.getLogger('mylogger')logger.basicConfig(level = ...,format = ...)那么简单......“ – theartofrain 2015-02-18 21:58:45
工作很棒!谢谢! – Eli 2016-12-01 14:58:24