@@ -113,6 +113,8 @@ def write(self, buf: str) -> int:
113
113
for __value , __name in LEVELS :
114
114
globals ()[__name ] = __value
115
115
116
+ _ROOT_LOGGER_SENTINEL = object ()
117
+
116
118
117
119
def _level_for (value : int ) -> str :
118
120
"""Convert a numeric level to the most appropriate name.
@@ -241,20 +243,22 @@ def emit(self, record: LogRecord) -> None:
241
243
logger_cache = {}
242
244
243
245
244
- def _addLogger (logger_name : str ) -> None :
246
+ def _addLogger (logger_name : Hashable ) -> None :
245
247
"""Adds the logger if it doesn't already exist"""
246
248
if logger_name not in logger_cache :
247
249
new_logger = Logger (logger_name )
248
250
new_logger .addHandler (StreamHandler ())
249
251
logger_cache [logger_name ] = new_logger
250
252
251
253
252
- def getLogger (logger_name : str ) -> "Logger" :
254
+ def getLogger (logger_name : Hashable = _ROOT_LOGGER_SENTINEL ) -> "Logger" :
253
255
"""Create or retrieve a logger by name; only retrieves loggers
254
256
made using this function; if a Logger with this name does not
255
257
exist it is created
256
258
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.
258
262
"""
259
263
_addLogger (logger_name )
260
264
return logger_cache [logger_name ]
@@ -263,12 +267,12 @@ def getLogger(logger_name: str) -> "Logger":
263
267
class Logger :
264
268
"""The actual logger that will provide the logging API.
265
269
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``
268
272
:param int level: (optional) The log level, default is ``NOTSET``
269
273
"""
270
274
271
- def __init__ (self , name : str , level : int = NOTSET ) -> None :
275
+ def __init__ (self , name : Hashable , level : int = NOTSET ) -> None :
272
276
"""Create an instance."""
273
277
self ._level = level
274
278
self .name = name
0 commit comments