Replace default handler of Python logger
Solution 1:
Perhaps the following example will help. Basically you can either remove the handlers of the logger you'd like to disable, or don't propagate with the logger you are logging from.
$ cat testlog.py
import logging
logging.basicConfig(filename='foo', level=logging.DEBUG)
root_logger = logging.getLogger()
root_logger.debug('bar')
my_logger = logging.getLogger('my_logger')
FORMAT = "%(process)s %(thread)s: %(message)s"
formatter = logging.Formatter(fmt=FORMAT)
handler = logging.StreamHandler()
handler.setFormatter(formatter)
my_logger.addHandler(handler)
my_logger.setLevel(logging.DEBUG)
my_logger.info('baz')
my_logger.propagate = False
my_logger.info('foobar')
my_logger.propagate = True
my_logger.info('foobaz')
root_logger.handlers = []
my_logger.info('barbaz')
$ python testlog.py
5927 140735224465760: baz
5927 140735224465760: foobar
5927 140735224465760: foobaz
5927 140735224465760: barbaz
$ cat foo
DEBUG:root:bar
INFO:my_logger:baz
INFO:my_logger:foobaz
Solution 2:
You can remove the default handler from the getLogger() using this:
logging.getLogger().removeHandler(logging.getLogger().handlers[0])
Or clear the existing handlers first before adding handlers that you want:
logging.getLogger().handlers.clear()
After doing so, these logs will no longer display except the new handlers you have added:
DEBUG: Do stuff
WARNING: Do stuff