【问题标题】:Logging level is info, but only warnings are shown. Python logging [duplicate]日志记录级别是信息,但只显示警告。 Python日志记录[重复]
【发布时间】:2020-11-11 08:52:31
【问题描述】:

我们有一个小的配置类,它可以返回一个带有一些特殊格式的记录器对象(来自logging 模块,而不是自定义的)。记录器级别为 20,但不会打印低于警告的任何内容。是否有任何其他参数会影响日志记录行为?下面,稍微执行一下我的意思:

logger = config_object.make_logger()
logger.setLevel(10)

# Prints logger attrs
print(logger.name)
print(logger.disabled)
print(logger.filters)
print(logger.level)

# Logger behaviour seems not right
logger.critical(f'method critical')
logger.error(f'method error')
logger.warning(f'method warning')
logger.info(f'method info')
logger.debug(f'method debug')

上面的代码输出如下:

__main__
False
[]
10
method critical
method error
method warning

如果logger.level 是10,它不应该一直记录到debug吗?

【问题讨论】:

  • 那是什么记录器对象?自写或来自日志模块docs.python.org/3/howto/logging.html
  • @PatrickArtner 来自 loggig 模块。编辑问题
  • 无法重现...config_object 是什么?
  • @Tomerikoo config_object 只是一些应用配置。 make_logger 方法返回一个带有一些特定格式选项的记录器对象(来自 logging 模块),因此每个开发人员都应该使用这种格式,而不是临时定义的
  • @Tomerikoo。实际上,配置类与您链接的配置类相同...非常感谢!

标签: python python-3.7


【解决方案1】:

来自官方doc 用于日志处理程序:

setLevel() 方法,就像在logger 对象中一样,指定将被分派到适当目的地的最低严重性。 为什么有两个setLevel() 方法?记录器中设置的级别决定了它将传递给其处理程序的消息的严重性。每个处理程序中设置的级别决定了该处理程序将发送哪些消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    相关资源
    最近更新 更多