繁体   English   中英

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

[英]logging level vs handler level

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

以下代码:

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将记录比hdlr2更多的信息( 20+ vs 30+ )。

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

当用户代码中出现 LoggingCall(like logging.info('blah blah' ) 时, Logger实例根据它的日志级别决定是否创建你的LogRecord 。如果记录被创建,它会通过过滤器 go,然后传递给处理程序。

所以在第二种情况下,

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

您尝试创建的日志 ( myLogging.debug("Message here") ) 未创建。

请参阅 python 文档中的日志记录流程说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM