gpt4 book ai didi

python - 记录 setLevel,它是如何工作的

转载 作者:IT老高 更新时间:2023-10-28 21:55:08 29 4
gpt4 key购买 nike

logging howto documentation有这个例子:

import logging

# create logger
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)

# create console handler and set level to debug
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

# create formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# add formatter to ch
ch.setFormatter(formatter)

# add ch to logger
logger.addHandler(ch)

为什么我应该将级别设置为 logging.DEBUG 两次,分别用于 LoggerStreamHandler

我了解 ch.setLevel(logging.DEBUG) 将为流处理程序设置调试级别。但是将级别设置为记录器的效果是什么?这个层次体现在哪里?

如果我将级别更改为例如 INFOLoggerStreamHandler,我会得到相同的控制台输出。

即:

...........
logger.setLevel(logging.INFO)
............
ch.setLevel(logging.DEBUG)

在控制台中提供与

相同的输出
...........
logger.setLevel(logging.DEBUG)
............
ch.setLevel(logging.INFO)

最佳答案

它用于微调(您可以有多个处理程序,并且每个处理程序都可以设置不同的级别) - 您可以安全地不在处理程序上设置级别,这将导致它处理所有消息(也称为 NOTSET 级别),并且将级别过滤留给记录器。

Logger 也是第一个根据级别过滤消息的——如果你将 logger 设置为 INFO,并且所有处理程序都设置为 DEBUG,你仍然不会在处理程序上收到 DEBUG 消息——它们将被 logger 拒绝本身。如果您将 logger 设置为 DEBUG,但将所有处理程序设置为 INFO,您也不会收到任何 DEBUG 消息 - 因为当 logger 说“好的,处理这个”时,处理程序拒绝它(DEBUG < INFO)。

关于python - 记录 setLevel,它是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6614078/

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