using dictConfig in python logging, need to create a logger with a different file than defined in dict.
logging, python
Solution
firstly, empty your logger handlers `logger.handlers = []` then add another handler.
logger2 = logging.getLogger('extensive')
logfile = logging.FileHandler("test.log")
logger2.handlers = []
logger2.addHandler(logfile)
Problem
I have a LOG_SETTINGS dict that looks like: ``` LOG_SETTINGS = { 'version': 1, 'handlers': { 'console': { 'class': 'logging.StreamHandler', 'level': 'INFO', 'formatter': 'detailed', 'stream': 'ext://sys.stdout', }, 'file': { 'class': 'logging.handlers.RotatingFileHandler', 'level': 'INFO', 'formatter': 'detailed', 'filename': '/tmp/junk.log', 'mode': 'a', 'maxBytes': 10485760, 'backupCount': 5, }, }, 'formatters': { 'detailed': { 'format': '%(asctime)s %(module)-17s line:%(lineno)-4d ' \ '%(levelname)-8s %(message)s', }, 'email': { 'format': 'Timestamp: %(asctime)s\nModule: %(module)s\n' \ 'Line: %(lineno)d\nMessage: %(message)s', }, }, 'loggers': { 'extensive': { 'level':'DEBUG', 'handlers': ['file',] }, } } ``` In my code I do the following: ``` logging.config.dictConfig(LOG_SETTINGS) logger = logging.getLogger('extensive') logger.info("This is from Runner {0}".format(self.default_name)) logger2 = logging.getLogger('extensive') logfile = logging.FileHandler("test.log") logger2.addHandler(logfile) logger2.info("This is from Runner {0} to the new file.".format(self.default_name)) ``` But the output is still written to the original log file defined in LOG_SETTINGS. What I am looking for is to have the ability to say: logger2.replaceHandler(logfile) rather than addHandler. Is there a way to do this?