我有一个应用程序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__
,日志记录将再次起作用,但这当然不是很优雅。有更好的想法吗?