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

时间:2014-02-27 14:34:25

标签: python logging pelican

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

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

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

1 个答案:

答案 0 :(得分:0)

如果您使用建议的记录器命名方法,请执行以下操作:

logger = logging.getLogger(__name__)

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

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

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