San*_*Kim 2 python logging filter python-logging
这似乎是一个非常简单的问题,但我找不到任何很好的例子。
我想过滤一个具有特定名称的记录器。
例如
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")
Run Code Online (Sandbox Code Playgroud)
我希望 root 记录器会过滤消息,b因为我知道logging.Filter只通过nameor childs of the name.
但正如您所料,它只会传递所有消息。
我有什么误解?
正如logging文档所述:
由后代记录器生成的事件不会被记录器的过滤器设置过滤,除非过滤器也已应用于那些后代记录器
如果您只想关闭来自子记录器的消息,您可以设置其级别:
logging.getLogger("a").setLevel(logging.CRITICAL + 1)
Run Code Online (Sandbox Code Playgroud)