如何在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