@@ -107,75 +107,61 @@ def sentry_patched_callhandlers(self, record):
107
107
logging .Logger .callHandlers = sentry_patched_callhandlers # type: ignore
108
108
109
109
110
- def _can_record (record ):
111
- # type: (LogRecord) -> bool
112
- """Prevents ignored loggers from recording"""
113
- for logger in _IGNORED_LOGGERS :
114
- if fnmatch (record .name , logger ):
115
- return False
116
- return True
117
-
118
-
119
- def _breadcrumb_from_record (record ):
120
- # type: (LogRecord) -> Dict[str, Any]
121
- return {
122
- "type" : "log" ,
123
- "level" : _logging_to_event_level (record ),
124
- "category" : record .name ,
125
- "message" : record .message ,
126
- "timestamp" : datetime .datetime .utcfromtimestamp (record .created ),
127
- "data" : _extra_from_record (record ),
128
- }
129
-
130
-
131
- def _logging_to_event_level (record ):
132
- # type: (LogRecord) -> str
133
- return LOGGING_TO_EVENT_LEVEL .get (
134
- record .levelno , record .levelname .lower () if record .levelname else ""
110
+ class _BaseHandler (logging .Handler , object ):
111
+ COMMON_RECORD_ATTRS = frozenset (
112
+ (
113
+ "args" ,
114
+ "created" ,
115
+ "exc_info" ,
116
+ "exc_text" ,
117
+ "filename" ,
118
+ "funcName" ,
119
+ "levelname" ,
120
+ "levelno" ,
121
+ "linenno" ,
122
+ "lineno" ,
123
+ "message" ,
124
+ "module" ,
125
+ "msecs" ,
126
+ "msg" ,
127
+ "name" ,
128
+ "pathname" ,
129
+ "process" ,
130
+ "processName" ,
131
+ "relativeCreated" ,
132
+ "stack" ,
133
+ "tags" ,
134
+ "thread" ,
135
+ "threadName" ,
136
+ "stack_info" ,
137
+ )
135
138
)
136
139
140
+ def _can_record (self , record ):
141
+ # type: (LogRecord) -> bool
142
+ """Prevents ignored loggers from recording"""
143
+ for logger in _IGNORED_LOGGERS :
144
+ if fnmatch (record .name , logger ):
145
+ return False
146
+ return True
147
+
148
+ def _logging_to_event_level (self , record ):
149
+ # type: (LogRecord) -> str
150
+ return LOGGING_TO_EVENT_LEVEL .get (
151
+ record .levelno , record .levelname .lower () if record .levelname else ""
152
+ )
137
153
138
- COMMON_RECORD_ATTRS = frozenset (
139
- (
140
- "args" ,
141
- "created" ,
142
- "exc_info" ,
143
- "exc_text" ,
144
- "filename" ,
145
- "funcName" ,
146
- "levelname" ,
147
- "levelno" ,
148
- "linenno" ,
149
- "lineno" ,
150
- "message" ,
151
- "module" ,
152
- "msecs" ,
153
- "msg" ,
154
- "name" ,
155
- "pathname" ,
156
- "process" ,
157
- "processName" ,
158
- "relativeCreated" ,
159
- "stack" ,
160
- "tags" ,
161
- "thread" ,
162
- "threadName" ,
163
- "stack_info" ,
164
- )
165
- )
166
-
167
-
168
- def _extra_from_record (record ):
169
- # type: (LogRecord) -> Dict[str, None]
170
- return {
171
- k : v
172
- for k , v in iteritems (vars (record ))
173
- if k not in COMMON_RECORD_ATTRS
174
- and (not isinstance (k , str ) or not k .startswith ("_" ))
175
- }
154
+ def _extra_from_record (self , record ):
155
+ # type: (LogRecord) -> Dict[str, None]
156
+ return {
157
+ k : v
158
+ for k , v in iteritems (vars (record ))
159
+ if k not in self .COMMON_RECORD_ATTRS
160
+ and (not isinstance (k , str ) or not k .startswith ("_" ))
161
+ }
176
162
177
163
178
- class EventHandler (logging . Handler , object ):
164
+ class EventHandler (_BaseHandler ):
179
165
"""
180
166
A logging handler that emits Sentry events for each log record
181
167
@@ -190,7 +176,7 @@ def emit(self, record):
190
176
191
177
def _emit (self , record ):
192
178
# type: (LogRecord) -> None
193
- if not _can_record (record ):
179
+ if not self . _can_record (record ):
194
180
return
195
181
196
182
hub = Hub .current
@@ -232,7 +218,7 @@ def _emit(self, record):
232
218
233
219
hint ["log_record" ] = record
234
220
235
- event ["level" ] = _logging_to_event_level (record )
221
+ event ["level" ] = self . _logging_to_event_level (record )
236
222
event ["logger" ] = record .name
237
223
238
224
# Log records from `warnings` module as separate issues
@@ -255,7 +241,7 @@ def _emit(self, record):
255
241
"params" : record .args ,
256
242
}
257
243
258
- event ["extra" ] = _extra_from_record (record )
244
+ event ["extra" ] = self . _extra_from_record (record )
259
245
260
246
hub .capture_event (event , hint = hint )
261
247
@@ -264,7 +250,7 @@ def _emit(self, record):
264
250
SentryHandler = EventHandler
265
251
266
252
267
- class BreadcrumbHandler (logging . Handler , object ):
253
+ class BreadcrumbHandler (_BaseHandler ):
268
254
"""
269
255
A logging handler that records breadcrumbs for each log record.
270
256
@@ -279,9 +265,20 @@ def emit(self, record):
279
265
280
266
def _emit (self , record ):
281
267
# type: (LogRecord) -> None
282
- if not _can_record (record ):
268
+ if not self . _can_record (record ):
283
269
return
284
270
285
271
Hub .current .add_breadcrumb (
286
- _breadcrumb_from_record (record ), hint = {"log_record" : record }
272
+ self . _breadcrumb_from_record (record ), hint = {"log_record" : record }
287
273
)
274
+
275
+ def _breadcrumb_from_record (self , record ):
276
+ # type: (LogRecord) -> Dict[str, Any]
277
+ return {
278
+ "type" : "log" ,
279
+ "level" : self ._logging_to_event_level (record ),
280
+ "category" : record .name ,
281
+ "message" : record .message ,
282
+ "timestamp" : datetime .datetime .utcfromtimestamp (record .created ),
283
+ "data" : self ._extra_from_record (record ),
284
+ }
0 commit comments