Skip to main content
 首页 » 编程设计

Python日志记录,如何过滤特定的记录器

2025年05月04日61开发

这似乎是一个非常简单的问题,但我找不到适合我的例子。

我想过滤一个具有特定名称的记录器。

例如

import logging 
 
logging.root.setLevel(logging.DEBUG) 
logging.root.addHandler(logging.StreamHandler()) 
logging.root.addFilter(logging.Filter(name="a")) 
 
a = logging.getLogger("a") 
b = logging.getLogger("b") 
 
a.info("aaaaa") 
b.info("bbbbb") 

我预计根记录器会过滤来自 b 的消息,因为我知道 logging.Filter 只传递 namechilds名字的

但如您所料,它只是传递了所有消息。

我误解了什么?

请您参考如下方法:

logging 文档所述:

events which have been generated by descendant loggers will not be filtered by a logger’s filter setting, unless the filter has also been applied to those descendant logger

如果你只想关闭来自子记录器的消息,你可以设置它的级别:

logging.getLogger("a").setLevel(logging.CRITICAL + 1)