How to ignore log entries from imported modules (not written by me)?
The setup:
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()
The Log:
INFO:root:calling module
INFO:<someOtherModule>.<some dependency> <random dependency message here>
INFO:root:stuff happened
How can I get rid of that middle message?
I was not able to find an answer after looking at the logging documentation or by googling.
I found this answer but the workaround does not seem to work for me.
For the curious ones the actual log entry is:
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): <address here>
We have different levels for logging, like:
So, if you don't want to see
INFO
level, just raise the level, like:Don't forget to change level of log for your wanted information to
CRITICAL
.OR:
Try this:
Hope your issue solves. :)
One work around(which I admit not a pretty one though), is to use the logging.disable method to disable the INFO logs at the time of calling the dependency methods.
One advantage, I think, this gives you is that if there are any errorwarning/critical failure log messages are to be reported by the dependency module, this will allow only them. You can set the disable attribute to logging.WARNING to report only error or failure messages.