Dynamically changing log level without restarting the application
Is it possible to change the log level using fileConfig in python without restarting the application. If it cannot be achieved through fileConfig is there some other way to get the same result?
Update: This was for an application running on a server, I wanted sys admins to be able to change a config file that would be picked during run time by application and change the log level dynamically. I was working with gevent at that time hence I've added my code as one of the answers which uses inotify to pick changes to config file.
Solution 1:
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)
Solution 2:
In addition to the accepted answer: Depending on how you initialized the logger, you might also have to update the logger's handlers:
import logging
level = logging.DEBUG
logger = logging.getLogger()
logger.setLevel(level)
for handler in logger.handlers:
handler.setLevel(level)