如何在Python中logging源文件名和行号
是否有可能装饰/扩展python标准日志logging系统,以便在调用日志logging方法时,还会logging文件和行号,或者调用它的方法?
当然,在日志文档中检查格式化程序 。 特别是lineno和pathnamevariables。
%(path名)s发出日志logging调用的源文件的完整path名(如果可用)。
%(filename)spath名的文件名部分。
%(模块)s模块(文件名称部分)。
%(funcName)s包含日志logging调用的函数的名称。
%(lineno)d发出日志logging调用的源行号(如果可用)。
看起来像这样:
formatter = logging.Formatter('[%(asctime)s] p%(process)s {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s','%m-%d %H:%M:%S')
在Seb的非常有用的答案的顶部,这里是一个方便的代码片段,用合理的格式来演示logging器的使用情况:
#!/usr/bin/env python import logging logging.basicConfig(format='%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s', datefmt='%d-%m-%Y:%H:%M:%S', level=logging.DEBUG) logger = logging.getLogger('stackoverflow_rocks') logger.debug("This is a debug log") logger.info("This is an info log") logger.critical("This is critical") logger.error("An error occurred")
生成这个输出:
06-06-2017:17:07:02,158 DEBUG [log.py:11] This is a debug log 06-06-2017:17:07:02,158 INFO [log.py:12] This is an info log 06-06-2017:17:07:02,158 CRITICAL [log.py:13] This is critical 06-06-2017:17:07:02,158 ERROR [log.py:14] An error occurred