动态更改日志级别不起作用
import logging
logger = logging.Logger("MyLogger", level=logging.INFO)
formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
console = logging.StreamHandler()
console.setFormatter(formatter)
logger.addHandler(console)
logger.setLevel("INFO")
logger.info("should show up")
logger.setLevel(logging.CRITICAL)
logger.info("should not show up")
输出
MyLogger - INFO - should show up
MyLogger - INFO - should not show up
有什么建议我做错了什么
要更改日志记录级别,您需要在父级和处理程序上更改它:
另一个答案是“工作”,但在这里并不能说明全部情况。答案声称您需要更改记录器和的处理程序,这是不正确的
事实上,有两种
setLevel
方法(在记录器和处理程序上)记录器中设置的级别确定将传递给其处理程序的消息的严重性。每个处理程序中设置的级别决定处理程序将发送哪些消息。在正常使用中,仅将其中一个设置为“关键”就足以过滤该信息事件它在您的情况下不起作用,因为没有在documented way中创建记录器:
使用} 返回一个错误缓存的结果
logging.Logger(...)
创建记录器绕过了日志模块的全局状态,并破坏了日志树的层次结构。具体地说,它导致^{如果以常规方式创建,则在记录器实例上设置级别将不会影响处理程序:
相关问题 更多 >
编程相关推荐