Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions sentry_sdk/integrations/logging.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
from sentry_sdk.hub import Hub
from sentry_sdk.integrations import Integration

DEFAULT_LEVEL = logging.INFO
DEFAULT_EVENT_LEVEL = logging.ERROR

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

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

def __init__(self, level=logging.INFO, event_level=None):
def __init__(self, level=DEFAULT_LEVEL, event_level=DEFAULT_EVENT_LEVEL):
self._handler = SentryHandler(level=level, event_level=event_level)

def install(self):
Expand All @@ -43,8 +45,8 @@ def sentry_patched_callhandlers(self, record):


class SentryHandler(logging.Handler, object):
def __init__(self, level, event_level):
logging.Handler.__init__(self, level)
def __init__(self, level=DEFAULT_LEVEL, event_level=DEFAULT_EVENT_LEVEL, **kwargs):
logging.Handler.__init__(self, level, **kwargs)
if event_level is None:
self._event_level = None
else:
Expand Down
6 changes: 6 additions & 0 deletions sentry_sdk/integrations/sanic.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from sentry_sdk.utils import capture_internal_exceptions, event_from_exception
from sentry_sdk.integrations import Integration
from sentry_sdk.integrations._wsgi import RequestExtractor, _filter_headers
from sentry_sdk.integrations.logging import ignore_logger

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

# Sanic 0.8 and older creates a logger named "root" and puts a
# stringified version of every exception in there (without exc_info),
# which our error deduplication can't detect.
ignore_logger("root")

old_handle_request = Sanic.handle_request

async def sentry_handle_request(self, request, *args, **kwargs):
Expand Down
9 changes: 2 additions & 7 deletions tests/integrations/logging/test_logging.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import pytest
import logging

import sentry_sdk

from sentry_sdk.integrations.logging import LoggingIntegration

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

logger.info("bread")
logger.critical("LOL")
assert not events

sentry_sdk.capture_exception(ValueError())
event, = events

assert event["level"] == "error"
assert event["level"] == "fatal"
assert any(crumb["message"] == "bread" for crumb in event["breadcrumbs"])
assert any(crumb["message"] == "LOL" for crumb in event["breadcrumbs"])
assert not any(crumb["message"] == "LOL" for crumb in event["breadcrumbs"])