[英]logging - how to ignore imported module logs?
如何忽略來自導入模塊的日志條目(不是我寫的)?
設置:
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
我怎樣才能擺脫那個中間信息?
在查看日志記錄文檔或通過谷歌搜索后,我無法找到答案。
我找到了這個答案,但解決方法似乎對我不起作用。
對於好奇的人,實際的日志條目是:
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): <address here>
一個解決方法(我承認不是一個漂亮的),是使用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以僅報告錯誤或失敗消息。
我們有不同的日志記錄級別,例如:
'debug': logging.DEBUG,
'info': logging.INFO,
'warning': logging.WARNING,
'error': logging.ERROR,
'critical': logging.CRITICAL
所以,如果你不想看到INFO
級別,只需提高級別,如:
logging.basicConfig(level=logging.CRITICAL)
不要忘記將所需信息的日志級別更改為CRITICAL
。
要么:
試試這個:
...
logger = logging.getLogger()
...
logger.disabled = True
someOtherModule.function()
logger.disabled = False
...
希望你的問題得到解決。 :)
您可以使用以下命令設置給定模塊的日志記錄級別:
logging.getLogger("someOtherModule").setLevel(logging.WARNING)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.