从记录器和处理程序设置日志记录级别有什么区别?

如下代码:

myLogging = logging.getLogger('myOp')
myLogging.setLevel(10)
hdlr = logging.FileHandler(myLogFile)
myLogging.addHandler(hdlr)
myLogging.debug("Message here")


将登录到myLogFile,但其他人不会:

myLogging = logging.getLogger('myOp')
hdlr = logging.FileHandler(myLogFile)
hdlr.setLevel(10)
myLogging.addHandler(hdlr)
myLogging.debug("Message here")


为什么FileHandler.setLevel()无法写入myLogFile

最佳答案

logger高于handler。您可以将handler作为过滤器进行映像。例如,您有一个带两个处理程序的记录器:

myLogging = logging.getLogger('myOp')
myLogging.setLevel(10)

hdlr1 = xxx
hdlr2 = xxx
hdlr1.setLevel(20)
hdlr2.setLevel(30)

myLogging.addHandler(hdlr1)
myLogging.addHandler(hdlr2)


在这种情况下,logger本身将记录10+hdlr1将记录比hdlr220+30+)更多的信息。

回到您的情况,尽管您已经设置了hdlr.setLevel(10),但是假设您的logger级别为20,这就像一个倒三角形。

08-25 00:21