Python默认情况下关闭记录器
在Python中,我希望可以选择从一个模块进行日志记录,但在默认情况下,通过函数调用启用此日志记录。(此文件的输出将非常垃圾-因此默认情况下最好不要使用) 我希望我的代码看起来像这样Python默认情况下关闭记录器,python,logging,Python,Logging,在Python中,我希望可以选择从一个模块进行日志记录,但在默认情况下,通过函数调用启用此日志记录。(此文件的输出将非常垃圾-因此默认情况下最好不要使用) 我希望我的代码看起来像这样 log=logging.getLogger(“模块”) log.switch_off() --- 导入模块 module.log.switch_on() 我似乎找不到禁用记录器的选项 考虑的备选方案: 使用过滤器:我认为这对客户来说有点混乱 设置一个高于我用来记录的级别:(例如,logging.CRITICAL
log=logging.getLogger(“模块”)
log.switch_off()
---
导入模块
module.log.switch_on()
我似乎找不到禁用记录器的选项
考虑的备选方案:
- 使用过滤器:我认为这对客户来说有点混乱
- 设置一个高于我用来记录的级别:(例如,
)。我不喜欢,如果我们使用那个级别,我们可能会在不经意间将日志行抛出到正常输出中logging.CRITICAL
- 使用标志并添加ifs
- 要求客户端排除我们的日志事件。看
- 这里有两件事在起作用。Python有
logging.Logger
对象和logging.Handler
对象,它们共同为您提供日志信息。日志记录器处理收集日志信息的逻辑,并决定是否应将日志发送给关联的处理程序。如果日志记录的日志级别低于记录器中指定的级别,则不会将信息传递给关联的处理程序
处理程序具有相同的功能,并且由于处理程序是日志记录和已定义输出之间的最后一行,因此您可能希望禁用其中的交互。为了实现这一点,并避免在其他地方无意中记录日志,您可以向应用程序添加新的日志记录级别:
logging.addLevelName(logging.CRITICAL+1,“DISABLELOGGING”)
注意:这只是出于格式化目的将名称映射到值,因此您还需要向日志模块添加成员:
logging.DISABLELOGGING=logging.CRITICAL+1
将其设置为高于CRITICAL
的值可确保不会传递和发出任何正常日志事件
然后,您只需将处理程序设置为您定义的级别:
handler.setLevel(logging.DISABLELOGGING)
现在应该没有通过处理程序的日志,因此没有显示输出