@@ -95,14 +95,22 @@ def emit(self, level, msg):
95
95
# pylint:disable=undefined-variable
96
96
97
97
logger_cache = dict ()
98
+ null_logger = None
98
99
99
100
100
101
def getLogger (name ):
102
+ global null_logger
101
103
"""Create or retrieve a logger by name.
102
104
103
- :param name: the name of the logger to create/retrieve
105
+ :param name: the name of the logger to create/retrieve None will cause the
106
+ NullLogger instance to be returned.
104
107
105
108
"""
109
+ if not name or name == "" :
110
+ if not null_logger :
111
+ null_logger = NullLogger ()
112
+ return null_logger
113
+
106
114
if name not in logger_cache :
107
115
logger_cache [name ] = Logger ()
108
116
return logger_cache [name ]
@@ -112,11 +120,7 @@ class Logger:
112
120
"""Provide a logging api."""
113
121
114
122
def __init__ (self ):
115
- """Create an instance.
116
-
117
- :param handler: what to use to output messages. Defaults to a PrintHandler.
118
-
119
- """
123
+ """Create an instance."""
120
124
self ._level = NOTSET
121
125
self ._handler = PrintHandler ()
122
126
@@ -201,3 +205,39 @@ def critical(self, format_string, *args):
201
205
202
206
"""
203
207
self .log (CRITICAL , format_string , * args )
208
+
209
+
210
+ class NullLogger :
211
+ """Provide an empty logger.
212
+ This can be used in place of a real logger to more efficiently disable logging."""
213
+
214
+ def __init__ (self ):
215
+ """Dummy implementation."""
216
+
217
+ def setLevel (self , value ):
218
+ """Dummy implementation."""
219
+
220
+ def getEffectiveLevel (self ):
221
+ """Dummy implementation."""
222
+ return NOTSET
223
+
224
+ def addHandler (self , hldr ):
225
+ """Dummy implementation."""
226
+
227
+ def log (self , level , format_string , * args ):
228
+ """Dummy implementation."""
229
+
230
+ def debug (self , format_string , * args ):
231
+ """Dummy implementation."""
232
+
233
+ def info (self , format_string , * args ):
234
+ """Dummy implementation."""
235
+
236
+ def warning (self , format_string , * args ):
237
+ """Dummy implementation."""
238
+
239
+ def error (self , format_string , * args ):
240
+ """Dummy implementation."""
241
+
242
+ def critical (self , format_string , * args ):
243
+ """Dummy implementation."""
0 commit comments