我不得不扩展现有的日志库以添加一些功能。其中之一是允许处理程序在不知道它是否存在的情况下侦听任何现有日志的功能。以下允许处理程序侦听,但不检查日志是否存在:
def listen_to_log(target, handler):
logging.getLogger(target).addHandler(handler)
问题是我不希望任何处理程序侦听未记录到的日志,并且想要引发 ValueError
如果日志尚不存在。理想情况下,我会执行以下操作:
def listen_to_log(target, handler):
if not logging.logExists(target):
raise ValueError('Log not found')
logging.getLogger(target).addHandler(handler)
到目前为止,我一直无法找到像 logging.logExists
这样的功能,是否有这样的功能或方便的解决方法?
原文由 shayaan 发布,翻译遵循 CC BY-SA 4.0 许可协议
适用于我和你的解决方法:
当您为自己的代码创建一个记录器时,您几乎肯定会创建一个带有处理程序(文件处理程序和/或控制台处理程序)的记录器。当您尚未创建记录器并且通过以下方式获得“根”记录器时
那么这个记录器还没有处理程序。因此,我总是检查上面的记录器是否会产生一个具有处理程序的记录器
因此,仅当根记录器没有处理程序时,我才创建一个记录器:
“create_my_logger”片段代表我的代码/函数,它返回一个记录器(带有处理程序)。