Dynamically changing log level without restarting the application Dynamically changing log level without restarting the application python python

Dynamically changing log level without restarting the application


fileConfig is a mechanism to configure the log level for you based on a file; you can dynamically change it at any time in your program.

Call .setLevel() on the logging object for which you want to change the log level. Usually you'd do that on the root:

logging.getLogger().setLevel(logging.DEBUG)


In addition to the accepted answer: Depending on how you initialized the logger, you might also have to update the logger's handlers:

import logginglevel = logging.DEBUGlogger = logging.getLogger()logger.setLevel(level)for handler in logger.handlers:    handler.setLevel(level)


Expanding on sfinken's answer, and Starman's subsequent comment, you can also check the type of the handler to target a specific outputter - for instance:

import logginglogger = logging.getLogger()for handler in logger.handlers:    if isinstance(handler, type(logging.StreamHandler())):        handler.setLevel(logging.DEBUG)        logger.debug('Debug logging enabled')