了解Python日志语句的存储位置的方法是什么?Python日志记录 - 检查日志文件的位置?
也就是说,如果我做的:
import logging
log = logging.getLogger(__name__)
log.info('Test')
我在哪里能找到的日志文件?另外,当我打电话时:
logging.getLogger(__name__)
这是否与记录器的行为/保存方式有关?
了解Python日志语句的存储位置的方法是什么?Python日志记录 - 检查日志文件的位置?
也就是说,如果我做的:
import logging
log = logging.getLogger(__name__)
log.info('Test')
我在哪里能找到的日志文件?另外,当我打电话时:
logging.getLogger(__name__)
这是否与记录器的行为/保存方式有关?
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
一起使用的常见模式,因为它会使记录器结构镜像代码的模块结构,这通常会使日志消息在调试时更加有用。
为了找到日志文件的位置,尝试实例化您的log
对象在您的环境中一个Python外壳,看着价值:
log.handlers[0].stream
为了得到一个简单的文件记录器的日志位置,尝试
logging.getLoggerClass().root.handlers[0].baseFilename