0
我在发现logging
,我想将它集成到一个类中以供外部使用。这意味着,用户可以选择忽略日志记录功能或将处理程序绑定到它。如何在Python中将记录器添加到模块中?
我现在有这在我的测试模块:
import logging
class Test:
def __init__(self):
self.logger = logging.getlogger(__module__ + '.Test')
def hello(self):
self.logger.warn('Hello World!')
test = Test()
test.hello()
有了这个,我得到的错误
No handlers could be found for logger
我恰恰不想绑定一个处理程序,这个记录器,否则我可能会覆盖父母的选择。我认为默认处理程序是Nullhandler
。
什么是一个日志记录功能集成一个独立的模块内的正确模式?
当然一个解决办法是检查,如果没有处理程序绑定到它:
if not len(self.logger): l.addHandler(logging.NullHandler())
这不可能是真正的代码。 “测试”没有“警告”属性。 'self.warn('Hello World!')'会失败。 –
@PeterWood我的错误:( – nowox
我创建了日志模块,提供我自己的getLogger功能检查“如果不logger.handlers”,并增加了一个控制台处理器的封装模块。所以,你所建议的解决方案应该工作。 –