如何忽略导入模块中的日志条目(不是我写的)?
设置:
import logging
import <someOtherModule>
logging.basicConfig(level=logging.INFO)
class myClass:
...
def some_method(self):
logging.info('calling module')
someOtherModule.function()
logging.info('stuff happened')
if __name__ == "__main__":
a = myClass().some_method()
日志:
INFO:root:calling module
INFO:<someOtherModule>.<some dependency> <random dependency message here>
INFO:root:stuff happened
如何摆脱那条中间信息?
在查看日志记录文档或使用Google搜索后,我无法找到答案 我找到this回答,但解决方法对我来说似乎不起作用。
对于好奇的人,实际的日志条目是:
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): <address here>
答案 0 :(得分:2)
一个解决方法(我承认不是一个漂亮的方法)是使用logging.disable方法在调用依赖方法时禁用INFO日志。
class myClass:
...
def some_method(self):
logging.info('calling module')
logging.disable(logging.INFO)
someOtherModule.function()
logging.disable(logging.NOTSET)
logging.info('stuff happened')
我认为,这有一个好处,即如果有依赖模块报告任何错误警告/严重故障日志消息,这将只允许它们。您可以将disable属性设置为logging.WARNING以仅报告错误或失败消息。
答案 1 :(得分:1)
我们有不同的日志记录级别,例如:
'debug': logging.DEBUG,
'info': logging.INFO,
'warning': logging.WARNING,
'error': logging.ERROR,
'critical': logging.CRITICAL
因此,如果您不希望看到INFO
级别,只需提高级别,例如:
logging.basicConfig(level=logging.CRITICAL)
不要忘记将所需信息的日志级别更改为CRITICAL
。
OR:
试试这个:
...
logger = logging.getLogger()
...
logger.disabled = True
someOtherModule.function()
logger.disabled = False
...
希望你的问题得到解决。 :)