From aa9174ebaf06500f6c62919d70544bf38bc927af Mon Sep 17 00:00:00 2001 From: Eishausener Date: Mon, 22 Apr 2024 16:10:48 +0200 Subject: [PATCH] improved how the default logger is initialized --- eh_logging/__init__.py | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/eh_logging/__init__.py b/eh_logging/__init__.py index 250411e..e524508 100644 --- a/eh_logging/__init__.py +++ b/eh_logging/__init__.py @@ -33,7 +33,7 @@ __all__ = tuple(logging__all__ + [ 'set_default_logger', 'warning', ]) -__version__ = '0.1.6' +__version__ = '0.1.7' __author__ = 'Eishausener ' __name__ = 'eh_logging' @@ -49,6 +49,9 @@ _DEBUG = False class DEFAULT: # -- Default Logger Name -- # LOGGER_NAME = 'eh_logging' + # -- Default Handler internal name -- # + HANDLER_NAME_STREAM = 'eh_logging-stream-default' + HANDLER_NAME_TEMP_STREAM = 'eh_logging-stream-helper' # -- Logger Space -- # SPACE_LOGGER_NAME = 11 SPACE_LEVEL = 8 @@ -111,10 +114,10 @@ def _init(): _logger = getLogger(DEFAULT.LOGGER_NAME) _changed = True - if not _logger.handlers: + if not _logger.hasHandlers(): print_debug(f'[DEBUG] adding stream handler to logger. (addr: {id(_logger)})') _handler = StreamHandler() - _handler.name = 'eh_logging-stream-helper' # should not be displayed. only for internal use + _handler.name = DEFAULT.HANDLER_NAME_TEMP_STREAM # should not be displayed. only for internal use _logger.addHandler(_handler) _changed = True @@ -611,16 +614,21 @@ def _init_default_logger(): Initialize the default logger with a formatted logger :return: """ + removed = False _logger = getLogger(DEFAULT.LOGGER_NAME) - _formatter = FormatterColor() - _handler = StreamHandler() - _handler.setFormatter(_formatter) - _handler.name = 'eh_logging-stream-default' # should not be displayed. only for internal use - # remove all handlers to prevent duplicate handlers for handler in _logger.handlers: - _logger.removeHandler(handler) - _logger.addHandler(_handler) - _default_logger.set(_logger) + if handler.name == DEFAULT.HANDLER_NAME_TEMP_STREAM: + # remove temp handler + _logger.removeHandler(handler) + removed = True + if removed or not _logger.hasHandlers(): + # add new formatted stream handler + _formatter = FormatterColor() + _handler = StreamHandler() + _handler.setFormatter(_formatter) + _handler.name = DEFAULT.HANDLER_NAME_STREAM # should not be displayed. only for internal use + _logger.addHandler(_handler) + _default_logger.set(_logger) _init_default_logger()