1

I am working with the Python logging module but I don't know how get writing in different files for each type of logging level.

For example, I want the debug-level messages (and only debug) saved in the file debug.log.

This is the code I have so far, I have tried with handlers but does not work anymore. I don't know If it is possible to do so I wish. This is the code I have using handlers and different files for each level of logging, but it does not work, since the Debug file save messages of all other levels.

import logging as _logging
self.logger = _logging.getLogger(__name__)
_handler_debug = _logging.FileHandler(self.debug_log_file)
_handler_debug.setLevel(_logging.DEBUG)
self.logger.addHandler(_handler_debug)

_handler_info = _logging.FileHandler(self.info_log_file)
_handler_info.setLevel(_logging.INFO)
self.logger.addHandler(_handler_info)

_handler_warning = _logging.FileHandler(self.warning_log_file)
_handler_warning.setLevel(_logging.WARNING)
self.logger.addHandler(_handler_warning)

_handler_error = _logging.FileHandler(self.error_log_file)
_handler_error.setLevel(_logging.ERROR)
self.logger.addHandler(_handler_error)

_handler_critical = _logging.FileHandler(self.critical_log_file)
_handler_critical.setLevel(_logging.CRITICAL)
self.logger.addHandler(_handler_critical)

self.logger.debug("debug test")
self.logger.info("info test")
self.logger.warning("warning test")
self.logger.error("error test")
self.logger.critical("critical test")

And the debug.log contains this:

debug test
info test
warning test
error test
critical test

I'm working with classes, so I have adapted a bit the code

thewolfx41
  • 65
  • 6
  • 1
    Possible duplicate of [python logging specific level only](https://stackoverflow.com/questions/8162419/python-logging-specific-level-only) – thewolfx41 Aug 15 '19 at 15:30

1 Answers1

0

Possible duplicate to: python logging specific level only
Please see the accepted answer there.

You need to use filters for each handler that restrict the output to the log level supplied.

E. Körner
  • 122
  • 3
  • 9