使用logging直接输出时,如何抑制pdf2docx包的日志?
解决pdf2docx converter模块日志泛滥的问题
不是直接用logging就没法抑制这些日志,只是得换个方式操作——因为这个模块直接用的是根日志器(而非独立的命名日志器),所以只要针对根日志器调整配置就行,下面是几种可行的方法:
提前配置根日志器级别:在导入pdf2docx之前,先调用
logging.basicConfig设置更高的日志级别(比如WARNING或ERROR)。因为basicConfig只会在第一次被调用时生效,模块里的后续调用会被忽略:import logging # 先把根日志级别设为WARNING,过滤掉INFO及以下的日志 logging.basicConfig(level=logging.WARNING) from pdf2docx import Converter事后调整根日志器级别:如果已经导入了模块,直接修改根日志器的级别也能生效:
import logging from pdf2docx import Converter # 调整根日志器级别,抑制INFO日志 logging.getLogger().setLevel(logging.WARNING)调整根日志器的Handler级别:如果根日志器已经绑定了StreamHandler,也可以单独给Handler设置更高的级别,不影响其他日志配置:
import logging from pdf2docx import Converter for handler in logging.getLogger().handlers: handler.setLevel(logging.WARNING)
原理说明:这个模块直接调用logging.info()这类方法时,本质是在使用根日志器(logging.getLogger()),而模块内的logging.basicConfig(level=logging.INFO)会把根日志器的级别设为INFO,导致所有INFO级别的日志都被输出。但根日志器的配置是全局可修改的,所以通过上面的方法就能覆盖或调整它的行为,达到抑制日志的目的。
内容的提问来源于stack exchange,提问作者swygerts
相关产品推荐
相关产品推荐

