I would like to output different messages for my loglevels.
For DEBUG and ERROR I would like to have an output like this:
%(levelname)s %(asctime)s [%(filename)s %(name)s.%(funcName)s - Line %(lineno)s] %(message)s
For INFO and WARN I prefer this format:
%(levelname)s %(asctime)s %(message)s
I have already set up a config file with different handlers for each loglevel, but I get
- 1 debug message
- 2 info message
- 3 warn message
- 4 error message
This is my logging configuration:
[loggers]
keys=root
[handlers]
keys=debugHandler,infoHandler,warnHandler,errorHandler
[formatters]
keys=detailedFormatter,simpleFormatter
[logger_root]
handlers=debugHandler,infoHandler,warnHandler,errorHandler
level=DEBUG
[handler_debugHandler]
class=StreamHandler
level=DEBUG
formatter=detailedFormatter
[handler_infoHandler]
class=StreamHandler
level=INFO
formatter=simpleFormatter
[handler_warnHandler]
class=StreamHandler
level=WARN
formatter=simpleFormatter
[handler_errorHandler]
class=StreamHandler
level=ERROR
formatter=detailedFormatter
[formatter_detailedFormatter]
format=%(levelname)s %(asctime)s [%(filename)s %(name)s.%(funcName)s - Line %(lineno)s] %(message)s
[formatter_simpleFormatter]
format=%(levelname)s %(asctime)s %(message)s
if I have the following sample sequence
logging.debug('debug message')
logging.info('info message')
logging.warning('warn message')
logging.error('error message')
I suspect that the debug handler prints at each level, the info handler prints when info or a level above is called, etc.
Is there a solution that my specific formatters are only applied to a specific level?