gpt4 book ai didi

Python 日志记录 : Set handlers for all loggers of used modules

转载 作者:太空狗 更新时间:2023-10-29 21:08:43 27 4
gpt4 key购买 nike

我有我的主脚本,它使用 argparse 解释 cli 命令,然后通过调用另一个模块(由我自己制作)中的相应内容来启动应用程序。

我现在的问题是如何从该模块将处理程序附加到记录器。使用

检索记录器
logger = logging.getLogger(__name__)

因此我在主脚本中添加了以下内容:

consoleHandler = logging.StreamHandler()
logger = logging.getLogger('MyModule')
logger.addHandler(consoleHandler)

但是“MyModule”的日志输出为 0。日志级别正确,例如应该有输出。

MyModule 中,我有以下内容:

logging.getLogger(__name__).addHandler(logging.NullHandler())

但是删除它没有任何区别。

那么我怎样才能正确地将处理程序附加到 MyModule 的记录器?

最佳答案

handler 添加到 logger 的最佳示例来自 Docs。 , 见下文。

您是否使用 setLevel()Formatter() 添加了 consoleHandler

至于这一行:logging.getLogger(__name__).addHandler(logging.NullHandler())

你为什么要这样使用它?我建议按照下一个代码以正确的方式添加处理程序。

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)

# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

关于Python 日志记录 : Set handlers for all loggers of used modules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20392391/

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