假设您的代码使用的模块
使用来自模块的logging.info
而不是来自记录器实例的logger.info
的日志语句,并且您无权修改正在使用的模块。
是否可以为导入的模块自定义日志记录级别,而无需向维护者请求更改代码?
这些问题描述了一种非常简单的方法,用于更改特定模块的日志记录级别。
How do I disable log messages from the Requests library?
Python Logging - Disable logging from imported modules
下面的代码实现了如上所述的解决方案,以仅记录来自该模块的ERROR消息,但未按预期方式打开WARNING消息。
当将noisy_noise模块作为字符串文字引用并使用导入符号的名称时,测试模块会产生相同的输出。
run_me.py禁止显示WARN消息时缺少什么?
编辑:假定此模块代表从其他维护者导入的模块,并且已关闭以进行修改
import logging
def log_things():
logging.warn('WARNING')
logging.info('INFORMATION')
logging.error('DANGER')
import logging
import noisy_noise
import sys
def main(args):
logging.getLogger(noisy_noise.__name__).setLevel(logging.ERROR)
# logging.getLogger('noisy_noise').setLevel(logging.ERROR)
noisy_noise.log_things()
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))
$ python run_me.py
WARNING:root:WARNING
ERROR:root:DANGER
答案 0 :(得分:0)
是的,如果您知道记录仪的名称,则是可能的。
示例:将urllib3的日志级别更改为警告
logging.getLogger("urllib3").setLevel(logging.WARNING)