Skip to content

Commit 4eae772

Browse files
authored
fix: Change logging integration defaults (#93)
* fix: Error logs are events * fix: Make handler pass through kwargs * fix: Fix logging test * fix: Work around sanic logging
1 parent 71294f5 commit 4eae772

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

sentry_sdk/integrations/logging.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
from sentry_sdk.hub import Hub
1313
from sentry_sdk.integrations import Integration
1414

15+
DEFAULT_LEVEL = logging.INFO
16+
DEFAULT_EVENT_LEVEL = logging.ERROR
1517

1618
_IGNORED_LOGGERS = set(["sentry_sdk.errors"])
1719

@@ -27,7 +29,7 @@ def ignore_logger(name):
2729
class LoggingIntegration(Integration):
2830
identifier = "logging"
2931

30-
def __init__(self, level=logging.INFO, event_level=None):
32+
def __init__(self, level=DEFAULT_LEVEL, event_level=DEFAULT_EVENT_LEVEL):
3133
self._handler = SentryHandler(level=level, event_level=event_level)
3234

3335
def install(self):
@@ -43,8 +45,8 @@ def sentry_patched_callhandlers(self, record):
4345

4446

4547
class SentryHandler(logging.Handler, object):
46-
def __init__(self, level, event_level):
47-
logging.Handler.__init__(self, level)
48+
def __init__(self, level=DEFAULT_LEVEL, event_level=DEFAULT_EVENT_LEVEL, **kwargs):
49+
logging.Handler.__init__(self, level, **kwargs)
4850
if event_level is None:
4951
self._event_level = None
5052
else:

sentry_sdk/integrations/sanic.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from sentry_sdk.utils import capture_internal_exceptions, event_from_exception
88
from sentry_sdk.integrations import Integration
99
from sentry_sdk.integrations._wsgi import RequestExtractor, _filter_headers
10+
from sentry_sdk.integrations.logging import ignore_logger
1011

1112
from sanic import Sanic
1213
from sanic.router import Router
@@ -22,6 +23,11 @@ def install(self):
2223
# state between requests.
2324
raise RuntimeError("The sanic integration for Sentry requires Python 3.7+")
2425

26+
# Sanic 0.8 and older creates a logger named "root" and puts a
27+
# stringified version of every exception in there (without exc_info),
28+
# which our error deduplication can't detect.
29+
ignore_logger("root")
30+
2531
old_handle_request = Sanic.handle_request
2632

2733
async def sentry_handle_request(self, request, *args, **kwargs):

tests/integrations/logging/test_logging.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import pytest
22
import logging
33

4-
import sentry_sdk
5-
64
from sentry_sdk.integrations.logging import LoggingIntegration
75

86
other_logger = logging.getLogger("testfoo")
@@ -33,11 +31,8 @@ def test_logging_defaults(integrations, sentry_init, capture_events):
3331

3432
logger.info("bread")
3533
logger.critical("LOL")
36-
assert not events
37-
38-
sentry_sdk.capture_exception(ValueError())
3934
event, = events
4035

41-
assert event["level"] == "error"
36+
assert event["level"] == "fatal"
4237
assert any(crumb["message"] == "bread" for crumb in event["breadcrumbs"])
43-
assert any(crumb["message"] == "LOL" for crumb in event["breadcrumbs"])
38+
assert not any(crumb["message"] == "LOL" for crumb in event["breadcrumbs"])

0 commit comments

Comments
 (0)