Skip to content

Commit 3c2825f

Browse files
committed
fix: Reuse existing loggers, preventing overwriting issues
1 parent 06b383b commit 3c2825f

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

src/_griffe/logger.py

+15-3
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,25 @@ class _Logger:
4242
def __init__(self, name: str) -> None:
4343
# Default logger that can be patched by third-party.
4444
self._logger = self.__class__._default_logger(name)
45-
# Register instance.
46-
self._instances[name] = self
4745

4846
def __getattr__(self, name: str) -> Any:
4947
# Forward everything to the logger.
5048
return getattr(self._logger, name)
5149

50+
@classmethod
51+
def get(cls, name: str) -> _Logger:
52+
"""Get a logger instance.
53+
54+
Parameters:
55+
name: The logger name.
56+
57+
Returns:
58+
The logger instance.
59+
"""
60+
if name not in cls._instances:
61+
cls._instances[name] = cls(name)
62+
return cls._instances[name]
63+
5264
@classmethod
5365
def _patch_loggers(cls, get_logger_func: Callable) -> None:
5466
# Patch current instances.
@@ -67,7 +79,7 @@ def get_logger(name: str) -> _Logger:
6779
Returns:
6880
The logger.
6981
"""
70-
return _Logger(name)
82+
return _Logger.get(name)
7183

7284

7385
def patch_loggers(get_logger_func: Callable[[str], Any]) -> None:

0 commit comments

Comments
 (0)