当前位置: 首页 > 知识库问答 >
问题:

在stdout上显示信息级python日志而不更改源代码

阎慈
2023-03-14

如果一个我无法更改其源代码的模块说了这样的话:

# foo.py
import logging

logging.info('Hello world')
$ python foo.py

从我的符合POSIX的终端?

关于这一点,我能找到的所有答案都涉及到更改源代码。

这些文档对日志记录警告级别和更高级别非常清楚:

但我不知道如何改变默认设置。

共有1个答案

徐星阑
2023-03-14

使用一个咒语运行脚本,为您预配置logging(现在100%更兼容Python3)。

$ cat foo.py
import logging
logging.info('Hello world')

$ python3 -c 'import logging,sys,runpy;logging.basicConfig(level=logging.INFO,stream=sys.stdout);runpy.run_path("foo.py")'
INFO:root:Hello world
~/Desktop

为了让它更有纪念意义,您可以将内容包装在please_log.py中。需要一些sys.argv欺骗。

import logging, sys, runpy
script = sys.argv.pop(1)
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
runpy.run_path(script)
import logging
import sys

logging.info('Hello world: %s', sys.argv)
$ python3 please_log.py foo.py
INFO:root:Hello world: ['foo.py']
 类似资料:
  • 对于我在Python(2.7)中的第一个日志记录实验,我正在创建一个基本的日志记录模块,它将快速为创建一个记录器(这样我就不必为每个模块/类配置它)。 我想要做的是创建一个日志程序,它在控制台上显示所有级别信息及更高级别的消息,并将所有调试级别信息移动到一个文本文件中。 到目前为止,我已经创建了一个日志程序,它打印信息直到控制台,并将每个日志消息打印到一个文本文件。然而,我不想要所有的信息和更高的

  • 社区! 以下是docker-compose.yml代码片段 丢失日志会有什么问题?会不会是某种stdout缓冲(如果是,我该如何修复它)?

  • 我目前正在尝试降低我在java项目中使用的PDFBox 1.8.6库的日志记录级别,但失败了。基于前面的问题,我在 /src/目录中有以下log4j.properties文件。 我不确定我还遗漏了什么,因为我仍然在控制台中收到类似以下消息的垃圾邮件。 如果有一种方法可以通过编程方式更改日志级别,那么我根本不会附加到属性文件,因为我在其他任何地方都不使用log4j。我不知道它是否使用log4j。属性

  • 是的,我已经阅读了所有相关的问题。我正在使用log4j2(尝试了2.4版和更新到最新的2.6.2版)。 我有一个面向客户的小型实用程序。我渴望将暴露的配置保持在最低限度。但对于有问题的情况,我还想添加一个标志,以便在运行时启用调试日志。 这是我启用调试日志记录的代码 但它实际上并不适用于这些情况: 实用程序通常在30秒内完成,因此更改应该是即时的。这是log4j2。xml 使用AppenderRe

  • 我怀疑这可能是我包含的一个库,它正在扰乱我的日志。这有可能吗?librray可以改变我的日志显示方式吗?既然我有点迷路了,我该怎么调查呢?

  • 我的应用程序登录到控制台和文件(log4net 1.2.11):