[英]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")
) 未创建。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.