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

将Python“print”输出重定向到记录器

巩俊远
2023-03-14
if logging_enabled:
  sys.stdout=log.info
print("test")

这可能吗?我知道我可以以类似的方式将stdout定向到文件(请参见:将打印重定向到日志文件)

共有1个答案

邢飞鸿
2023-03-14

您有两种选择:

>

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

    log = open("myprog.log", "a")
    sys.stdout = log
    
    >>> print("Hello")
    >>> # nothing is printed because it goes to the log file instead.
    

    将打印替换为日志功能:

    # 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
    

  •  类似资料:
    • 问题内容: 我有一个Python脚本,它利用“打印”来打印到stdout。我最近通过Python Logger添加了日志记录,并希望通过日志记录使这些打印语句进入日志记录器(如果启用了日志记录)。我不想修改或删除这些打印语句。 我可以通过执行’log.info(“ some info msg”)’进行记录。我希望能够做这样的事情: 如果启用了日志记录,则应该像记录log.info(“ test”)

    • 问题内容: 我对jdk日志记录配置有疑问。我有一个使用JDK Logging输出消息的EJB(已部署到glassfish中)。因此,我使用具有以下代码的命名记录器: 我知道可以通过将以下行添加到Glassfish的logging.properties文件中来为记录器配置日志级别: 但是,如何为记录器指定输出文件?我想将来自名为“ org.imixs.workflow”的记录器的所有消息放入单独的文

    • 问题内容: 我想从Groovy程序中执行foo.bat,并将生成的进程的输出重定向到stdout。Java或Groovy代码示例都可以。 foo.bat可能需要花费几分钟才能运行并生成大量输出,因此我希望在生成后立即查看输出,而不是必须等到该过程完成之后才能立即查看所有输出。 问题答案: 它使用一个类读取执行的程序生成的所有输出,并将其显示在其自己的stdout中。

    • 问题内容: 我正在AIX 6上工作,在KIX Shell上运行Java命令,并且正在尝试调试类加载问题。我放了-verbose:class来打印加载的类,然后>> / home / user / log.log将控制台放到一个文件中。已创建log.log文件,但其大小为零。文件不包含任何信息,所有详细信息都在一闪而过。 问题答案: 也尝试重定向: 您的Java代码可能正在编写您的命令未重定向的信息

    • 我想让我的程序记录给定对象的XML使用: 目前,我使用stdout作为输出流。但是stdout没有打印在log4j日志文件中。 如何将此方法的输出重定向到log4j日志文件? 谢啦

    • 我有一个在 docker 容器中运行的 mysql 容器,该容器故意无法通过任何端口访问,但可供其他 Docker 容器访问。 例如,考虑以下mysql容器 现在我想在我的主机上存在的mysql中运行一个转储文件。 但是我得到了回应 如何将我的主机输出到docker容器? 请注意一件事,它不是关于错误的,通过删除-it或-i,我没有收到错误,但我无法通过管道输出到docker容器。 问题是如何将任