Skip to content

Commit 9f4740d

Browse files
committed
Handle loguru msg levels that are not supported by Sentry
1 parent 5dcda1d commit 9f4740d

File tree

1 file changed

+30
-2
lines changed

1 file changed

+30
-2
lines changed

sentry_sdk/integrations/loguru.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@ class LoggingLevels(enum.IntEnum):
3131
CRITICAL = 50
3232

3333

34+
SENTRY_LEVEL_FROM_LOGURU_LEVEL = {
35+
"TRACE": "DEBUG",
36+
"DEBUG": "DEBUG",
37+
"INFO": "INFO",
38+
"SUCCESS": "INFO",
39+
"WARNING": "WARNING",
40+
"ERROR": "ERROR",
41+
"CRITICAL": "CRITICAL",
42+
}
43+
3444
DEFAULT_LEVEL = LoggingLevels.INFO.value
3545
DEFAULT_EVENT_LEVEL = LoggingLevels.ERROR.value
3646
# We need to save the handlers to be able to remove them later
@@ -87,14 +97,32 @@ class _LoguruBaseHandler(_BaseHandler):
8797
def _logging_to_event_level(self, record):
8898
# type: (LogRecord) -> str
8999
try:
90-
return LoggingLevels(record.levelno).name.lower()
91-
except ValueError:
100+
return SENTRY_LEVEL_FROM_LOGURU_LEVEL[
101+
LoggingLevels(record.levelno).name
102+
].lower()
103+
except (ValueError, KeyError):
92104
return record.levelname.lower() if record.levelname else ""
93105

94106

95107
class LoguruEventHandler(_LoguruBaseHandler, EventHandler):
96108
"""Modified version of :class:`sentry_sdk.integrations.logging.EventHandler` to use loguru's level names."""
97109

110+
def __init__(self, *args, **kwargs):
111+
if kwargs.get("level"):
112+
kwargs["level"] = SENTRY_LEVEL_FROM_LOGURU_LEVEL.get(
113+
kwargs.get("level"), DEFAULT_LEVEL
114+
)
115+
116+
super().__init__(*args, **kwargs)
117+
98118

99119
class LoguruBreadcrumbHandler(_LoguruBaseHandler, BreadcrumbHandler):
100120
"""Modified version of :class:`sentry_sdk.integrations.logging.BreadcrumbHandler` to use loguru's level names."""
121+
122+
def __init__(self, *args, **kwargs):
123+
if kwargs.get("level"):
124+
kwargs["level"] = SENTRY_LEVEL_FROM_LOGURU_LEVEL.get(
125+
kwargs.get("level"), DEFAULT_LEVEL
126+
)
127+
128+
super().__init__(*args, **kwargs)

0 commit comments

Comments
 (0)