4

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

4

2 回答 2

3

默认情况下,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)
于 2013-10-21T19:16:03.820 回答
2

将您的日志级别设置为调试。

Logger.setLevel(Logger.DEBUG)

请参阅记录文档,其中他们声明:

将此记录器的阈值设置为 lvl。比 lvl 严重程度低的日志消息将被忽略。创建记录器时,级别设置为 NOTSET(当记录器是根记录器时会处理所有消息,或者当记录器是非根记录器时会委托给父级)。请注意,根记录器是使用 WARNING 级别创建的。

于 2013-10-21T19:27:10.990 回答