记录python中的setlevel和addfilter有什么区别

时间:2019-12-17 05:54:39

标签: python logging gunicorn

我最近开始在python中实现日志记录。我很难理解setlevel和addfilter日志记录方法之间的区别。我觉得他们有同样的目的。例如,如果我们添加logger.setlevel(debug)和logger.addfilter(logging.debug),它们将输出相同的记录。不是吗?

2 个答案:

答案 0 :(得分:1)

根据documentation

  

基本过滤器类仅允许特定事件以下的事件   指向记录器层次结构。例如,使用初始化的过滤器   “ A.B”将允许记录器“ A.B”,“ A.B.C”,“ A.B.C.D”,   “ A.B.D”等,但不是“ A.BB”,“ B.A.B”等。如果使用   空字符串,将传递所有事件。

     

请注意,在事件发生之前,请先咨询附加到处理程序的过滤器   由处理程序发出,而附加到记录器的过滤器是   每当记录事件时(使用debug(),info()等)进行咨询,   在向处理程序发送事件之前。这意味着   由后代记录器生成的内容将不会被   记录器的过滤器设置,除非该过滤器也已应用于   那些后代记录器。

答案 1 :(得分:0)

我想我自己找到了答案。过滤器旨在让我们在默认情况下基于级别的过滤之上添加其他基于功能的过滤器。

我从链接https://realpython.com/python-logging-source-code/#the-filter-and-filterer-classes

中找到了答案。