2828
2929
3030class LogRecord :
31- def set (self , name , level , message ):
31+ def __init__ (self , name , level , message , extra = None ):
3232 self .name = name
3333 self .levelno = level
3434 self .levelname = _level_dict [level ]
3535 self .message = message
3636 self .ct = time .time ()
3737 self .msecs = int ((self .ct - int (self .ct )) * 1000 )
3838 self .asctime = None
39+ if extra is not None :
40+ for key in extra :
41+ if (key in ["message" , "asctime" ]) or (key in self .__dict__ ):
42+ raise KeyError ("Attempt to overwrite %r in LogRecord" % key )
43+ setattr (self , key , extra [key ])
3944
4045
4146class Handler :
@@ -110,7 +115,6 @@ def __init__(self, name, level=NOTSET):
110115 self .name = name
111116 self .level = level
112117 self .handlers = []
113- self .record = LogRecord ()
114118
115119 def setLevel (self , level ):
116120 self .level = level
@@ -121,36 +125,36 @@ def isEnabledFor(self, level):
121125 def getEffectiveLevel (self ):
122126 return self .level or getLogger ().level or _DEFAULT_LEVEL
123127
124- def log (self , level , msg , * args ):
128+ def log (self , level , msg , * args , extra = None ):
125129 if self .isEnabledFor (level ):
126130 if args :
127131 if isinstance (args [0 ], dict ):
128132 args = args [0 ]
129133 msg = msg % args
130- self . record . set (self .name , level , msg )
134+ record = LogRecord (self .name , level , msg , extra )
131135 handlers = self .handlers
132136 if not handlers :
133137 handlers = getLogger ().handlers
134138 for h in handlers :
135- h .emit (self . record )
139+ h .emit (record )
136140
137- def debug (self , msg , * args ):
138- self .log (DEBUG , msg , * args )
141+ def debug (self , msg , * args , ** kwargs ):
142+ self .log (DEBUG , msg , * args , ** kwargs )
139143
140- def info (self , msg , * args ):
141- self .log (INFO , msg , * args )
144+ def info (self , msg , * args , ** kwargs ):
145+ self .log (INFO , msg , * args , ** kwargs )
142146
143- def warning (self , msg , * args ):
144- self .log (WARNING , msg , * args )
147+ def warning (self , msg , * args , ** kwargs ):
148+ self .log (WARNING , msg , * args , ** kwargs )
145149
146- def error (self , msg , * args ):
147- self .log (ERROR , msg , * args )
150+ def error (self , msg , * args , ** kwargs ):
151+ self .log (ERROR , msg , * args , ** kwargs )
148152
149- def critical (self , msg , * args ):
150- self .log (CRITICAL , msg , * args )
153+ def critical (self , msg , * args , ** kwargs ):
154+ self .log (CRITICAL , msg , * args , ** kwargs )
151155
152- def exception (self , msg , * args , exc_info = True ):
153- self .log (ERROR , msg , * args )
156+ def exception (self , msg , * args , exc_info = True , ** kwargs ):
157+ self .log (ERROR , msg , * args , ** kwargs )
154158 tb = None
155159 if isinstance (exc_info , BaseException ):
156160 tb = exc_info
@@ -178,32 +182,32 @@ def getLogger(name=None):
178182 return _loggers [name ]
179183
180184
181- def log (level , msg , * args ):
182- getLogger ().log (level , msg , * args )
185+ def log (level , msg , * args , ** kwargs ):
186+ getLogger ().log (level , msg , * args , ** kwarg )
183187
184188
185- def debug (msg , * args ):
186- getLogger ().debug (msg , * args )
189+ def debug (msg , * args , ** kwargs ):
190+ getLogger ().debug (msg , * args , ** kwargs )
187191
188192
189- def info (msg , * args ):
190- getLogger ().info (msg , * args )
193+ def info (msg , * args , ** kwargs ):
194+ getLogger ().info (msg , * args , ** kwargs )
191195
192196
193- def warning (msg , * args ):
194- getLogger ().warning (msg , * args )
197+ def warning (msg , * args , ** kwargs ):
198+ getLogger ().warning (msg , * args , ** kwargs )
195199
196200
197- def error (msg , * args ):
198- getLogger ().error (msg , * args )
201+ def error (msg , * args , ** kwargs ):
202+ getLogger ().error (msg , * args , ** kwargs )
199203
200204
201- def critical (msg , * args ):
202- getLogger ().critical (msg , * args )
205+ def critical (msg , * args , ** kwargs ):
206+ getLogger ().critical (msg , * args , ** kwargs )
203207
204208
205- def exception (msg , * args , exc_info = True ):
206- getLogger ().exception (msg , * args , exc_info = exc_info )
209+ def exception (msg , * args , exc_info = True , ** kwargs ):
210+ getLogger ().exception (msg , * args , exc_info = exc_info , ** kwargs )
207211
208212
209213def shutdown ():
0 commit comments