首页 文章

更改模块的python日志格式化程序

提问于
浏览
0

我正在运行鹈鹕..所以我有一个模块,我在其中创建了一个 Logger . 父 Logger 即 . pelican输出格式级别的数据:消息..

但是我希望将模块名称添加到日志消息中 . 因此,有一种方法可以将模块的消息像... xyz:message传递给父级,然后将其输出到控制台 .

我知道你可以为模块本身添加一个新的streamhandler并为它添加一个格式化器 . 但我的想法是......向模块添加一个新的streamhandler将导致模块本身输出到控制台 . 而不是父母这样做 . 这样做的正确方法是什么?

1 回答

  • 0

    如果您使用建议的命名 Logger 的做法,如下所示:

    logger = logging.getLogger(__name__)
    

    然后,您的格式字符串中的 %(name)s 将显示记录事件的模块 .

    处理程序被添加到 Logger 中,因此如果您的意思是“模块 Logger 本身”,那么您的语句“向模块本身添加新的流处理程序”才有意义 .

    如文档中所述,最佳实践是永远不要将处理程序(除 NullHandler 实例之外)添加到库代码中的 Logger (或者,通常是除 __main__ 模块之外的导入模块) . 在大多数情况下,您可以向根 Logger 添加处理程序,并将记录到所有其他 Logger 的事件发送到该处理程序 .

相关问题