日志记录级别与处理程序级别
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(如 logging.info('blah blah'
)时,Logger
实例根据其日志级别确定是否创建您的 LogRecord
。如果创建记录,它将通过过滤器,然后传递给处理程序。
所以在第二种情况下,
myLogging = logging.getLogger('myOp')
hdlr = logging.FileHandler(myLogFile)
hdlr.setLevel(10)
myLogging.addHandler(hdlr)
myLogging.debug("Message here")
您尝试创建的日志(myLogging.debug("Message here")
)未创建。
See this logging flow illustration python 文档。
从记录器和处理程序设置日志记录级别有什么区别?
以下代码:
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(如 logging.info('blah blah'
)时,Logger
实例根据其日志级别确定是否创建您的 LogRecord
。如果创建记录,它将通过过滤器,然后传递给处理程序。
所以在第二种情况下,
myLogging = logging.getLogger('myOp')
hdlr = logging.FileHandler(myLogFile)
hdlr.setLevel(10)
myLogging.addHandler(hdlr)
myLogging.debug("Message here")
您尝试创建的日志(myLogging.debug("Message here")
)未创建。
See this logging flow illustration python 文档。