Removing handlers from python's logging loggers
This isn't logger-specific behaviour. Never mutate (insert/remove elements) the list you're currently iterating on. If you need, make a copy. In this case testLogger.handlers = []
should do the trick.
If you don't want to delete them all (thanks for the tip @CatPlusPlus):
testLogger.handlers = [
h for h in testLogger.handlers if not isinstance(h, logging.StreamHandler)]
instead of mutating undocumented .handler
:
Option 1
logging.getLogger().removeHandler(logging.getLogger().handlers[0])
this way you remove exactly the preexisting handler object via offical api. Or to remove all handlers:
logger = logging.getLogger()
while logger.hasHandlers():
logger.removeHandler(logger.handlers[0])
Option 2
logging.config.dictConfig(config={'level': logging.DEBUG, 'handlers': []}
Not only removes but prevents its creation. List root will have []
handlers