我正在运行鹈鹕..所以我有一个模块,我在其中创建了一个记录器。父记录器即。 pelican输出格式级别的数据:message ..
但我希望将模块名称添加到日志消息中。因此,有一种方法可以将模块的消息像... xyz:message传递给父级,然后将其输出到控制台。
我知道你可以向模块本身添加一个新的streamhandler并为它添加一个格式化器..但我的想法是......向模块添加一个新的streamhandler将导致模块本身输出到控制台。而不是父母这样做。那么正确的做法是什么?
答案 0 :(得分:0)
如果您使用建议的记录器命名方法,请执行以下操作:
logger = logging.getLogger(__name__)
然后,格式字符串中的%(name)s
将显示记录事件的模块。
处理程序被添加到记录器中,因此如果您的意思是“模块记录器本身”,那么您的语句“向模块本身添加新的流处理程序”才有意义。
如文档中所述,最佳做法是永远不要向库代码中的记录器添加处理程序(NullHandler
实例除外)(或者,通常是除__main__
模块以外的导入模块) 。在大多数情况下,您可以向根记录器添加处理程序,并将记录到所有其他记录器的事件发送到该处理程序。