将 Python“打印”输出重定向到 Logger

2023-12-24

我有一个 Python 脚本,它使用“Print”来打印到标准输出。我最近通过 Python Logger 添加了日志记录,并且希望在启用日志记录的情况下将这些打印语句发送到记录器。我不想修改或删除这些打印语句。

我可以通过执行 'log.info("some info msg")' 来记录。我希望能够做这样的事情:

if logging_enabled:
  sys.stdout=log.info
print("test")

如果启用了日志记录,则应记录“test”,就像我执行 log.info(“test”) 一样。如果未启用日志记录,则应将“test”打印到屏幕上。

这可能吗?我知道我可以以类似的方式将标准输出重定向到文件(请参阅:将打印重定向到日志文件 https://stackoverflow.com/questions/2513479/redirect-prints-to-log-file)


您有两个选择:

  1. 打开日志文件并用它替换 sys.stdout,而不是函数:

    log = open("myprog.log", "a")
    sys.stdout = log
    
    >>> print("Hello")
    >>> # nothing is printed because it goes to the log file instead.
    
  2. 将 print 替换为您的日志函数:

    # If you're using python 2.x, uncomment the next line
    #from __future__ import print_function
    print = log.info
    
    >>> print("Hello!")
    >>> # nothing is printed because log.info is called instead of print
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Python“打印”输出重定向到 Logger 的相关文章

随机推荐