2013-01-18 245 views
13

了解Python日志语句的存储位置的方法是什么?Python日志记录 - 检查日志文件的位置?

也就是说,如果我做的:

import logging 
log = logging.getLogger(__name__) 
log.info('Test') 

我在哪里能找到的日志文件?另外,当我打电话时:

logging.getLogger(__name__) 

这是否与记录器的行为/保存方式有关?

回答

12

logging模块使用连接到记录器的处理程序来决定如何,在何处,甚至是最终如何存储或显示消息。您也可以将logging默认配置为写入文件。您应该确实阅读docs,但如果您致电logging.basicConfig(filename=log_file_name),其中log_file_name是要写入消息的文件的名称(请注意,必须在调用logging的其他任何内容之前执行此操作),则所有消息记录到所有消息记录器(除非稍后进行一些进一步的重新配置)将被写入那里。请注意记录器设置的级别;如果内存提供服务,info低于默认日志级别,所以您必须在basicConfig的参数中包含level=logging.INFO以及您的消息最终在文件中。

至于您的问题的其他部分,logging.getLogger(some_string)返回一个Logger对象,插入到根记录器的层次结构中的正确位置,名称的值为some_string。不带参数调用,它返回根记录器。 __name__返回当前模块的名称,因此logging.getLogger(__name__)返回Logger对象,其名称设置为当前模块的名称。这是与logging一起使用的常见模式,因为它会使记录器结构镜像代码的模块结构,这通常会使日志消息在调试时更加有用。

0

为了找到日志文件的位置,尝试实例化您的log对象在您的环境中一个Python外壳,看着价值:

log.handlers[0].stream

3

为了得到一个简单的文件记录器的日志位置,尝试

logging.getLoggerClass().root.handlers[0].baseFilename