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

使Python记录器除了将日志文件输出到stdout之外,还将所有消息输出到stdout

岳京
2023-03-14

是否有一种方法可以使使用logging模块的Python日志记录自动将内容输出到stdout(除了日志文件之外,它们应该去的地方)?例如,我希望对Logger.WarningLogger.CriticalLogger.Error的所有调用都转到它们的预定位置,但另外,始终要复制到stdout。这样做是为了避免重复以下信息:

mylogger.critical("something failed")
print "something failed"

共有1个答案

滕成双
2023-03-14

所有日志记录输出都由处理程序处理;只需将logging.streamHandler()添加到根记录器中。

下面是配置流处理程序(使用stdout而不是默认的stderr)并将其添加到根记录器的示例:

import logging
import sys

root = logging.getLogger()
root.setLevel(logging.DEBUG)

handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
root.addHandler(handler)
 类似资料:
  • 问题 你希望将单元测试的输出写到到某个文件中去,而不是打印到标准输出。 解决方案 运行单元测试一个常见技术就是在测试文件底部加入下面这段代码片段: import unittest class MyTest(unittest.TestCase): pass if __name__ == '__main__': unittest.main() 这样的话测试文件就是可执行的,并且会将

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

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

  • 问题内容: 我知道在Linux中,要将输出从屏幕重定向到文件,可以使用或。但是,我不确定为什么部分输出仍会输出到屏幕上而不写入文件。 有没有办法将所有输出重定向到文件? 问题答案: 该部分已写入stderr,用于重定向它。例如: 或者,如果您要在同一文件中: 注意:这在(ba)sh中有效,请检查您的shell语法是否正确

  • 当JMeter以非gui模式启动时,它显示了控制台上的一些日志,如下所示 但实际的测试执行日志会写入一个名为jmeter的单独日志文件。日志,它记录log4J级别的执行日志。 我们可以把这个jmeter.log内容也直接到STDOUT控制台吗?我知道我们可以将日志管道到控制台。但是有没有一种方法可以使用JMeter配置来做到这一点? 我将JMeter作为Kubernetes集群上的容器运行,并希望

  • 问题内容: 我需要使用启动多个长时间运行的进程,并希望将和从每个自动传送到单独的日志文件。每个进程将同时运行几分钟,并且我希望在进程运行时将 每个进程* 写入两个日志文件(和)。 * 我需要不断地调用,以便更新每个日志文件上的每个进程在循环,或者是有一些方法来调用原有的命令,以便和自动传输到打开的文件句柄? 问题答案: 根据文档, stdin,stdout和stderr分别指定执行程序的标准输入,