如何将python logging.debug()消息输出到标准输出?

时间:2013-10-21 19:15:16

标签: python linux

我有一个脚本通过python日志记录模块给我消息:logging.debug("a message here")。然而,当我运行linux命令python3 myscript.py -v >> log.txt时,我得到一个空白文件。如何将调试消息输出到日志文件?

2 个答案:

答案 0 :(得分:2)

默认情况下,logging模块会记录到sys.stderr。捕获流2,stderr代替:

python3 myscript.py -v 2>> log.txt

您还可以将stdinstderr重定向到同一个文件:

python3 myscript.py -v >> log.txt 2>&1

此处stderr被发送到同一输出stdin(输出1)定向到。

假设您已将日志记录级别设置为允许级别DEBUG消息。

最后但并非最不重要的是,您可以告诉logging.basicConfig()登录其他流而不是stderr

logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)

或者你可以给它一个文件名,这样就不需要重定向了:

logging.basicConfig(filename='log.txt', level=logging.DEBUG)

答案 1 :(得分:2)

将日志级别设置为调试。

Logger.setLevel(Logger.DEBUG)

请参阅logging的文档,其中包含:

  

将此记录器的阈值设置为lvl。记录不如lvl严重的消息将被忽略。创建记录器时,级别设置为NOTSET(当记录器是根记录器时会导致处理所有消息,或者当记录器是非root记录器时委托给父级)。请注意,根记录器的创建级别为WARNING。