在不更改源代码的情况下在 stdout 上显示 INFO 级别 python 日志
Showing INFO-level python logs on stdout without changing source code
如果我无法更改其源代码的模块表示如下内容:
# foo.py
import logging
logging.info('Hello world')
如何在 运行
期间查看日志
$ python foo.py
来自我的 POSIX 兼容终端?
All the I can 这个涉及到改源码
The docs 非常清楚 WARN 级别及以上的日志记录:
The INFO message doesn’t appear because the default level is WARNING.
但我看不出如何更改默认设置。
运行 带有为您预先配置 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
欺骗。
please_log.py
import logging, sys, runpy
script = sys.argv.pop(1)
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
runpy.run_path(script)
foo.py
import logging
import sys
logging.info('Hello world: %s', sys.argv)
输出
$ python3 please_log.py foo.py
INFO:root:Hello world: ['foo.py']
如果我无法更改其源代码的模块表示如下内容:
# foo.py
import logging
logging.info('Hello world')
如何在 运行
期间查看日志$ python foo.py
来自我的 POSIX 兼容终端?
All the
The docs 非常清楚 WARN 级别及以上的日志记录:
The INFO message doesn’t appear because the default level is WARNING.
但我看不出如何更改默认设置。
运行 带有为您预先配置 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
欺骗。
please_log.py
import logging, sys, runpy
script = sys.argv.pop(1)
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
runpy.run_path(script)
foo.py
import logging
import sys
logging.info('Hello world: %s', sys.argv)
输出
$ python3 please_log.py foo.py
INFO:root:Hello world: ['foo.py']