0

我有一个应用程序foo使用名为foo.modules的组迭代入口点。然后它使用load()方法加载任何事件。这种架构允许为应用程序foo编写插件/模块,可以在此处找到更多详细信息。

此外,应用程序在启动时配置了一些日志记录处理程序。但是,当我加载插件时(假设foo_plugin),foo应用程序的日志记录命名空间在命名空间层次结构中不可用,这会导致如下警告:

No handlers could be found for logger "foo_plugin.plugin"

这个概念是,任何编写插件的人都可以编写:

import logging
logger = logging.getLogger(__name__)

并且插件日志记录应该按照foo应用程序的要求工作。

如果我在变量之前显式添加foo命名空间 ( foo.) __name__,日志记录将再次起作用,但这当然不是很优雅。有更好的想法吗?

4

1 回答 1

0

插件应该如何知道它是否是 application 的一部分foo而不是 application bar?如果您不希望您的插件成为foo命名空间的一部分,您可以将您的处理程序附加到根记录器,您将不会收到有关“找不到处理程序”的消息。

于 2013-07-12T18:59:11.580 回答