如何检查记录器是否存在

2024-04-26 06:38:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我不得不扩展现有的日志库来添加一些特性。其中一个特性是允许处理程序监听任何现有的日志,而不必事先知道它是否存在。以下命令允许处理程序侦听,但不检查日志是否存在:

def listen_to_log(target, handler):
    logging.getLogger(target).addHandler(handler)

问题是,我不希望任何处理程序监听未被记录到的日志,如果日志不存在,我想引发一个ValueError。理想情况下,我会做如下的事情:

^{pr2}$

到目前为止,我还没有找到像logging.logExists这样的函数,有没有这样一个方便的解决方法?在


Tags: to命令log处理程序targetloggingdef记录
2条回答

警告。这是没有记录的。如有更改,恕不另行通知。在

日志模块在内部使用单个Manager对象来保存dict中的记录器层次结构,该dict可访问为:

import logging
logging.Logger.manager.loggerDict

除根日志记录器之外的所有记录器都以其名称存储在该dict中。在

网上的例子很少: http://code.activestate.com/lists/python-list/621740/https://michaelgoerz.net/notes/use-of-the-logging-module-in-python.html(使用python2打印)

当然,如果您将处理程序附加到根记录器,您将(通常)获得所有消息(除非库作者明确选择不传播到根处理程序)。在

为什么要关心处理程序是否监听尚未创建的日志?可以对忽略某些事件的处理程序应用筛选器。在

这并没有具体回答您的问题,因为我将您的问题看作是XY Problem的一个实例。在

相关问题 更多 >