Python日志记录:更改日志消息级别

时间:2015-11-18 14:50:55

标签: python logging

我有一个使用python日志记录的应用程序。所有INFO消息都打印到控制台,DEBUG保存到文件中。我使用的文件在INFO级别上过于冗长,但我仍然希望这些邮件在我的日志文件中。如何拦截来自库的日志消息并将其级别从INFO更改为DEBUG?

2 个答案:

答案 0 :(得分:1)

如果库是您编写的库(我怀疑不是这种情况),您可以使用python自己的日志记录系统调整日志记录级别:

https://docs.python.org/3/library/logging.html#logging-levels

但是,必须处理大量疯狂日志以调试某些问题,这是更常见的(而不是特定于python语言)。通常你没有编写代码或没有时间来改变工作库。日志总是与你不感兴趣的东西混在一起。所以这是一个只能看到你感兴趣的东西。我发现减少混乱的一个好方法是过滤tail命令的输出:

tail -F ./my_apps.log | grep -iHn“错误”

tail命令显示日志的最后一部分(尾部)。 -F选项告诉它积极尝试跟踪日志(即使它被删除并重新创建)。管道“|”加入这两个命令。

grep命令使用强大的正则表达式(现在学习它们!)来查找模式。它不一定是“错误”,它可以是任何模式和/或通配符和类别。

例如,如果你正在开发视频游戏AI,你可以让两个终端跟踪相同的日志:

tail -F ./my_game.log | grep -iHn“monster1” 和 tail -F ./my_game.log | grep -iHn“人类”

并查看每个人所做的事情(只要代码在前面记录使用正确字符串记录调用的两个对象)。您希望将日志写入同一文件,以便调试操作问题的顺序。

tail和grep是unix工具,但它们有windows端口(我认为是GnuWin32)。

您还可以过滤控制台/终端输出:

python myapp.py | grep -iHn“some_pattern”

答案 1 :(得分:0)

根据this帖子发布的内容是什么?

import sys
f = open('c:\\goat.txt', 'w')
sys.stdout = f
print "test"

这会将所有打印语句重定向到文本文件。您可以使用以下命令进行更改:

sys.stdout = sys.__stdout__