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