gpt4 book ai didi

Python:logging.streamhandler 没有将日志发送到标准输出

转载 作者:IT老高 更新时间:2023-10-28 21:09:07 24 4
gpt4 key购买 nike

我想使用 python 的 StreamHandler 日志处理程序。我试过的是,

import logging
import sys
mylogger = logging.getLogger("mylogger")
h1 = logging.StreamHandler(stream=sys.stdout)
h1.setLevel(logging.DEBUG)

mylogger.addHandler(h1)

# now trying to log with the created logger
mylogger.debug("abcd") # <no output>
mylogger.info("abcd") # <no output>
mylogger.warn("abcd") # abcd

我错过了什么吗?还是做错了什么?为什么 INFO 和 DEBUG 级别的日志没有出现在 STDOUT 上?

最佳答案

您必须设置记录器的级别,而不仅仅是处理程序的级别:

mylogger.setLevel(logging.DEBUG)

这是一个很好的日志记录工作流图形,您可以在其中看到记录器和处理程序检查日志级别:

http://docs.python.org/2/howto/logging.html#logging-flow

默认的logLevelWARNING,所以即使你把你的handler级别设置为DEBUG,消息也不会通过,因为您的记录器会抑制它(默认情况下它也是 WARNING)。

顺便说一下,你可以用Formatter做一些基本的格式化:

import logging
import sys

mylogger = logging.getLogger("mylogger")

formatter = logging.Formatter('[%(levelname)s] %(message)s')

handler = logging.StreamHandler(stream=sys.stdout)
handler.setFormatter(formatter)
handler.setLevel(logging.DEBUG)

mylogger.addHandler(handler)
mylogger.setLevel(logging.DEBUG)

mylogger.debug("This is a debug message.")
mylogger.info("Some info message.")
mylogger.warning("A warning.")

会给你输出

[DEBUG] This is a debug message.
[INFO] Some info message.
[WARNING] A warning.

关于Python:logging.streamhandler 没有将日志发送到标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17523173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com