Skip to content

Commit 5a7999c

Browse files
committed
Allow usage with a root logger
1 parent f304cf4 commit 5a7999c

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

adafruit_logging.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ def write(self, buf: str) -> int:
113113
for __value, __name in LEVELS:
114114
globals()[__name] = __value
115115

116+
_ROOT_LOGGER_SENTINEL = object()
117+
116118

117119
def _level_for(value: int) -> str:
118120
"""Convert a numeric level to the most appropriate name.
@@ -241,20 +243,22 @@ def emit(self, record: LogRecord) -> None:
241243
logger_cache = {}
242244

243245

244-
def _addLogger(logger_name: str) -> None:
246+
def _addLogger(logger_name: Hashable) -> None:
245247
"""Adds the logger if it doesn't already exist"""
246248
if logger_name not in logger_cache:
247249
new_logger = Logger(logger_name)
248250
new_logger.addHandler(StreamHandler())
249251
logger_cache[logger_name] = new_logger
250252

251253

252-
def getLogger(logger_name: str) -> "Logger":
254+
def getLogger(logger_name: Hashable = _ROOT_LOGGER_SENTINEL) -> "Logger":
253255
"""Create or retrieve a logger by name; only retrieves loggers
254256
made using this function; if a Logger with this name does not
255257
exist it is created
256258
257-
:param str logger_name: The name of the `Logger` to create/retrieve.
259+
:param Hashable logger_name: The name of the `Logger` to create/retrieve, this
260+
is typically a ``str``. If none is provided, the single root logger will
261+
be created/retrieved.
258262
"""
259263
_addLogger(logger_name)
260264
return logger_cache[logger_name]
@@ -263,12 +267,12 @@ def getLogger(logger_name: str) -> "Logger":
263267
class Logger:
264268
"""The actual logger that will provide the logging API.
265269
266-
:param str name: The name of the logger, typically assigned by the
267-
value from `getLogger`
270+
:param Hashable name: The name of the logger, typically assigned by the
271+
value from `getLogger`; this is typically a ``str``
268272
:param int level: (optional) The log level, default is ``NOTSET``
269273
"""
270274

271-
def __init__(self, name: str, level: int = NOTSET) -> None:
275+
def __init__(self, name: Hashable, level: int = NOTSET) -> None:
272276
"""Create an instance."""
273277
self._level = level
274278
self.name = name

0 commit comments

Comments
 (0)