首页 文章

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

提问于
浏览
1

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

2 回答

  • 0

    如果库是您编写的库(我怀疑不是这种情况),您可以使用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

    根据this帖这样的东西?

    导入系统
    f = open('c:\ goat.txt','w')
    sys.stdout = f
    打印“测试”

    这会将 ALL print语句重定向到文本文件 . 您可以使用以下命令进行更改:

    sys.stdout = sys .__ stdout__

相关问题