28
28
29
29
30
30
class LogRecord :
31
- def set (self , name , level , message ):
31
+ def __init__ (self , name , level , message , extra = None ):
32
32
self .name = name
33
33
self .levelno = level
34
34
self .levelname = _level_dict [level ]
35
35
self .message = message
36
36
self .ct = time .time ()
37
37
self .msecs = int ((self .ct - int (self .ct )) * 1000 )
38
38
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 ])
39
44
40
45
41
46
class Handler :
@@ -110,7 +115,6 @@ def __init__(self, name, level=NOTSET):
110
115
self .name = name
111
116
self .level = level
112
117
self .handlers = []
113
- self .record = LogRecord ()
114
118
115
119
def setLevel (self , level ):
116
120
self .level = level
@@ -121,36 +125,36 @@ def isEnabledFor(self, level):
121
125
def getEffectiveLevel (self ):
122
126
return self .level or getLogger ().level or _DEFAULT_LEVEL
123
127
124
- def log (self , level , msg , * args ):
128
+ def log (self , level , msg , * args , extra = None ):
125
129
if self .isEnabledFor (level ):
126
130
if args :
127
131
if isinstance (args [0 ], dict ):
128
132
args = args [0 ]
129
133
msg = msg % args
130
- self . record . set (self .name , level , msg )
134
+ record = LogRecord (self .name , level , msg , extra )
131
135
handlers = self .handlers
132
136
if not handlers :
133
137
handlers = getLogger ().handlers
134
138
for h in handlers :
135
- h .emit (self . record )
139
+ h .emit (record )
136
140
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 )
139
143
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 )
142
146
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 )
145
149
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 )
148
152
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 )
151
155
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 )
154
158
tb = None
155
159
if isinstance (exc_info , BaseException ):
156
160
tb = exc_info
@@ -178,32 +182,32 @@ def getLogger(name=None):
178
182
return _loggers [name ]
179
183
180
184
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 )
183
187
184
188
185
- def debug (msg , * args ):
186
- getLogger ().debug (msg , * args )
189
+ def debug (msg , * args , ** kwargs ):
190
+ getLogger ().debug (msg , * args , ** kwargs )
187
191
188
192
189
- def info (msg , * args ):
190
- getLogger ().info (msg , * args )
193
+ def info (msg , * args , ** kwargs ):
194
+ getLogger ().info (msg , * args , ** kwargs )
191
195
192
196
193
- def warning (msg , * args ):
194
- getLogger ().warning (msg , * args )
197
+ def warning (msg , * args , ** kwargs ):
198
+ getLogger ().warning (msg , * args , ** kwargs )
195
199
196
200
197
- def error (msg , * args ):
198
- getLogger ().error (msg , * args )
201
+ def error (msg , * args , ** kwargs ):
202
+ getLogger ().error (msg , * args , ** kwargs )
199
203
200
204
201
- def critical (msg , * args ):
202
- getLogger ().critical (msg , * args )
205
+ def critical (msg , * args , ** kwargs ):
206
+ getLogger ().critical (msg , * args , ** kwargs )
203
207
204
208
205
- def exception (msg , * args ):
206
- getLogger ().exception (msg , * args )
209
+ def exception (msg , * args , ** kwargs ):
210
+ getLogger ().exception (msg , * args , * kwargs )
207
211
208
212
209
213
def shutdown ():
0 commit comments