Ran*_*ndi 7 python debugging logging python-2.7
如何忽略来自导入模块的日志条目(不是我写的)?
设置:
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()
Run Code Online (Sandbox Code Playgroud)
日志:
INFO:root:calling module
INFO:<someOtherModule>.<some dependency> <random dependency message here>
INFO:root:stuff happened
Run Code Online (Sandbox Code Playgroud)
我怎样才能摆脱那个中间消息?
查看日志记录文档或通过谷歌搜索后,我无法找到答案。
我找到了这个答案,但解决方法似乎对我不起作用。
对于好奇的人,实际的日志条目是:
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): <address here>
Run Code Online (Sandbox Code Playgroud)
一种解决方法(我承认这不是一个很好的方法)是使用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')
Run Code Online (Sandbox Code Playgroud)
我认为,这给您带来的一个好处是,如果依赖模块要报告任何错误警告/严重故障日志消息,这将只允许它们。您可以将禁用属性设置为 logging.WARNING 以仅报告错误或失败消息。
我们有不同级别的日志记录,例如:
'debug': logging.DEBUG,
'info': logging.INFO,
'warning': logging.WARNING,
'error': logging.ERROR,
'critical': logging.CRITICAL
Run Code Online (Sandbox Code Playgroud)
因此,如果您不想看到INFO级别,只需提高级别即可,例如:
logging.basicConfig(level=logging.CRITICAL)
Run Code Online (Sandbox Code Playgroud)
不要忘记将所需信息的日志级别更改为CRITICAL.
或者:
尝试这个:
...
logger = logging.getLogger()
...
logger.disabled = True
someOtherModule.function()
logger.disabled = False
...
Run Code Online (Sandbox Code Playgroud)
希望您的问题能够解决。:)
| 归档时间: |
|
| 查看次数: |
4629 次 |
| 最近记录: |