Does anyone know if there is a way to use a variable in the setlevel() function of Python's Logging module?
At the moment I am using this:
Log = logging.getLogger('myLogger')
Log.setLevel(logging.DEBUG)
But I'd like to have this:
Log = logging.getLogger('myLogger')
levels = {'CRITICAL' : logging.critical,
'ERROR' : logging.error,
'WARNING' : logging.warning,
'INFO' : logging.info,
'DEBUG' : logging.debug
}
level = levels['INFO']
Log.setLevel(level)
But it doesn't seem to work - it just doesn't log anything.
I'm doing this so that I can set the logging level for a whole bunch of scripts from a variable in a single config file.
I find that leveraging an optional environmental variable is very convenient and flexible:
You should also be able to do this:
The
logging.getLevelName(lvl)
function works both ways. I use it, it works (you should check your python implementation though).This saves you the trouble to maintain your own dictionary, and reduces the possibility of typo errors.
logging.setLevel()
takes an int or a str.So the following works just fine (at least in Python 3.7):
What about using
getattr
onlogging
module?I had problems with python 3 and got this working for me: https://docs.python.org/3/howto/logging.html