日志记录级别与处理程序级别

sly*_*oty 5 python logging handler

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

下面的代码:

myLogging = logging.getLogger('myOp')
myLogging.setLevel(10)
hdlr = logging.FileHandler(myLogFile)
myLogging.addHandler(hdlr)
myLogging.debug("Message here")
Run Code Online (Sandbox Code Playgroud)

将登录到myLogFile,但另一个不会:

myLogging = logging.getLogger('myOp')
hdlr = logging.FileHandler(myLogFile)
hdlr.setLevel(10)
myLogging.addHandler(hdlr)
myLogging.debug("Message here")
Run Code Online (Sandbox Code Playgroud)

为什么他们FileHandler.setLevel()不会写信给myLogFile

Sra*_*raw 5

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)
Run Code Online (Sandbox Code Playgroud)

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

回到你的情况,虽然你已经设置了hdlr.setLevel(10),但是假设你的logger等级是20,这就像一个倒三角形。