【问题标题】:Python logging: change log message levelPython 日志记录:更改日志消息级别
【发布时间】:2016-02-20 08:55:39
【问题描述】:

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

【问题讨论】:

    标签: python logging


    【解决方案1】:

    this 帖子中的类似内容?

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

    这会将 ALL 打印语句重定向到文本文件。您可以使用以下方式改回:

    sys.stdout = sys.__stdout__
    

    【讨论】:

      【解决方案2】:

      如果该库是您编写的库(我怀疑不是这种情况),您可以使用 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" 和 尾-F ./my_game.log | grep -iHn "人类"

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

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

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

      python myapp.py | grep -iHn "some_pattern"

      【讨论】:

        猜你喜欢
        • 2020-11-19
        • 1970-01-01
        • 2014-09-01
        • 2023-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-24
        相关资源
        最近更新 更多