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 ):
206-     getLogger ().exception (msg , * args )
209+ def  exception (msg , * args ,  ** kwargs ):
210+     getLogger ().exception (msg , * args ,  * kwargs )
207211
208212
209213def  shutdown ():
0 commit comments