我有一个脚本通过python日志记录模块给我消息:logging.debug("a message here")
。然而,当我运行linux命令python3 myscript.py -v >> log.txt
时,我得到一个空白文件。如何将调试消息输出到日志文件?
答案 0 :(得分:2)
默认情况下,logging
模块会记录到sys.stderr
。捕获流2,stderr
代替:
python3 myscript.py -v 2>> log.txt
您还可以将stdin
和stderr
重定向到同一个文件:
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。