|
1 | 1 | from __future__ import absolute_import |
2 | 2 | from __future__ import print_function |
3 | 3 |
|
4 | | -import sys |
5 | 4 | import logging |
6 | 5 | import datetime |
7 | 6 |
|
@@ -59,33 +58,34 @@ def _breadcrumb_from_record(self, record): |
59 | 58 | } |
60 | 59 |
|
61 | 60 | def _emit(self, record): |
62 | | - add_breadcrumb(self._breadcrumb_from_record(record)) |
63 | | - |
64 | | - if not self._should_create_event(record): |
65 | | - return |
66 | | - |
67 | 61 | if not self.can_record(record): |
68 | | - print(to_string(record.message), file=sys.stderr) |
69 | 62 | return |
70 | 63 |
|
71 | | - event = Event() |
72 | | - |
73 | | - # exc_info might be None or (None, None, None) |
74 | | - if record.exc_info and all(record.exc_info): |
75 | | - exc_type, exc_value, tb = record.exc_info |
76 | | - event.set_exception( |
77 | | - exc_type, |
78 | | - exc_value, |
79 | | - skip_internal_frames(tb), |
80 | | - get_current_hub().client.options["with_locals"], |
81 | | - ) |
| 64 | + if self._should_create_event(record): |
| 65 | + with _internal_exceptions(): |
| 66 | + event = Event() |
| 67 | + |
| 68 | + # exc_info might be None or (None, None, None) |
| 69 | + if record.exc_info and all(record.exc_info): |
| 70 | + exc_type, exc_value, tb = record.exc_info |
| 71 | + event.set_exception( |
| 72 | + exc_type, |
| 73 | + exc_value, |
| 74 | + skip_internal_frames(tb), |
| 75 | + get_current_hub().client.options["with_locals"], |
| 76 | + ) |
| 77 | + |
| 78 | + event["level"] = self._logging_to_event_level(record.levelname) |
| 79 | + event["logger"] = record.name |
| 80 | + event["logentry"] = { |
| 81 | + "message": to_string(record.msg), |
| 82 | + "params": record.args, |
| 83 | + } |
| 84 | + |
| 85 | + capture_event(event) |
82 | 86 |
|
83 | | - event["level"] = self._logging_to_event_level(record.levelname) |
84 | | - event["logger"] = record.name |
85 | | - |
86 | | - event["logentry"] = {"message": to_string(record.msg), "params": record.args} |
87 | | - |
88 | | - capture_event(event) |
| 87 | + with _internal_exceptions(): |
| 88 | + add_breadcrumb(self._breadcrumb_from_record(record)) |
89 | 89 |
|
90 | 90 | def _logging_to_event_level(self, levelname): |
91 | 91 | return {"critical": "fatal"}.get(levelname.lower(), levelname.lower()) |
|
0 commit comments