我有一个应用程序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__
,则日志记录将再次起作用,但这当然不是很优雅。还有更好的主意吗?
插件应该如何知道它是否属于应用程序foo
而不是应用程序bar
?如果您不希望插件成为foo
名称空间的一部分,则只需将处理程序附加到根记录器,就不会收到有关“找不到处理程序”的消息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句