|
1 | 1 | __author__ = "desultory" |
2 | | -__version__ = "1.2.0" |
| 2 | +__version__ = "1.3.0" |
3 | 3 |
|
4 | 4 | from logging import Logger, getLogger |
5 | 5 |
|
6 | 6 | from .utils import add_handler_if_not_exists, handle_additional_logging, log_init |
7 | 7 |
|
8 | 8 |
|
9 | 9 | class LoggerMixIn: |
| 10 | + """ A mixin class that provides logging functionality to classes that inherit from it. |
| 11 | + The logger kwarg can be passed, which will be used as the parent logger. |
| 12 | + if _log_init is set to True, the logger will log the class initialization. |
| 13 | + if _log_level is set, the logger's level will be set to that value. |
| 14 | + If _log_bump is set, the logger's level will be bumped by that amount. |
| 15 | + Othweise, the log level is not set, and the logger will use the parent's level. |
| 16 | + """ |
| 17 | + |
10 | 18 | def init_logger(self, args, kwargs): |
11 | 19 | # Get the parent logger from the root if one was not passed |
12 | 20 | parent_logger = kwargs.pop("logger") if isinstance(kwargs.get("logger"), Logger) else getLogger() |
13 | 21 | # Get a child logger from the parent logger, set self.logger |
14 | 22 | self.logger = parent_logger.getChild(self.__class__.__name__) |
15 | | - # Bump the log level if _log_bump is passed |
16 | | - self.logger.setLevel(self.logger.parent.level + kwargs.pop("_log_bump", 0)) |
| 23 | + |
| 24 | + if log_level := kwargs.pop("_log_level", None): |
| 25 | + # Set the logger's level if _log_level is passed |
| 26 | + self.logger.setLevel(log_level) |
| 27 | + elif log_bump := kwargs.pop("_log_bump", None): |
| 28 | + self.logger.setLevel(self.logger.parent.level + log_bump) |
17 | 29 |
|
18 | 30 | # Add a colored stream handler if one does not exist |
19 | 31 | add_handler_if_not_exists(self.logger) |
|
0 commit comments