Skip to content

Commit f3b0b00

Browse files
mahmoudhossamMahmoud Hanafy
andauthored
feat: Support wildcards in ignore_logger (#1053)
Co-authored-by: Mahmoud Hanafy <[email protected]>
1 parent c94dd79 commit f3b0b00

File tree

4 files changed

+41
-7
lines changed

4 files changed

+41
-7
lines changed

scripts/build_awslambda_layer.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,14 @@ def create_init_serverless_sdk_package(self):
5151
Method that creates the init_serverless_sdk pkg in the
5252
sentry-python-serverless zip
5353
"""
54-
serverless_sdk_path = f'{self.packages_dir}/sentry_sdk/' \
55-
f'integrations/init_serverless_sdk'
54+
serverless_sdk_path = (
55+
f"{self.packages_dir}/sentry_sdk/" f"integrations/init_serverless_sdk"
56+
)
5657
if not os.path.exists(serverless_sdk_path):
5758
os.makedirs(serverless_sdk_path)
58-
shutil.copy('scripts/init_serverless_sdk.py',
59-
f'{serverless_sdk_path}/__init__.py')
59+
shutil.copy(
60+
"scripts/init_serverless_sdk.py", f"{serverless_sdk_path}/__init__.py"
61+
)
6062

6163
def zip(
6264
self, filename # type: str

scripts/init_serverless_sdk.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
sentry_sdk.init(
2020
dsn=os.environ["SENTRY_DSN"],
2121
integrations=[AwsLambdaIntegration(timeout_warning=True)],
22-
traces_sample_rate=float(os.environ["SENTRY_TRACES_SAMPLE_RATE"])
22+
traces_sample_rate=float(os.environ["SENTRY_TRACES_SAMPLE_RATE"]),
2323
)
2424

2525

sentry_sdk/integrations/logging.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import logging
44
import datetime
5+
from fnmatch import fnmatch
56

67
from sentry_sdk.hub import Hub
78
from sentry_sdk.utils import (
@@ -98,7 +99,11 @@ def sentry_patched_callhandlers(self, record):
9899

99100
def _can_record(record):
100101
# type: (LogRecord) -> bool
101-
return record.name not in _IGNORED_LOGGERS
102+
"""Prevents ignored loggers from recording"""
103+
for logger in _IGNORED_LOGGERS:
104+
if fnmatch(record.name, logger):
105+
return False
106+
return True
102107

103108

104109
def _breadcrumb_from_record(record):

tests/integrations/logging/test_logging.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import pytest
44
import logging
55

6-
from sentry_sdk.integrations.logging import LoggingIntegration
6+
from sentry_sdk.integrations.logging import LoggingIntegration, ignore_logger
77

88
other_logger = logging.getLogger("testfoo")
99
logger = logging.getLogger(__name__)
@@ -134,3 +134,30 @@ def filter(self, record):
134134

135135
(event,) = events
136136
assert event["logentry"]["message"] == "hi"
137+
138+
139+
def test_ignore_logger(sentry_init, capture_events):
140+
sentry_init(integrations=[LoggingIntegration()], default_integrations=False)
141+
events = capture_events()
142+
143+
ignore_logger("testfoo")
144+
145+
other_logger.error("hi")
146+
147+
assert not events
148+
149+
150+
def test_ignore_logger_wildcard(sentry_init, capture_events):
151+
sentry_init(integrations=[LoggingIntegration()], default_integrations=False)
152+
events = capture_events()
153+
154+
ignore_logger("testfoo.*")
155+
156+
nested_logger = logging.getLogger("testfoo.submodule")
157+
158+
logger.error("hi")
159+
160+
nested_logger.error("bye")
161+
162+
(event,) = events
163+
assert event["logentry"]["message"] == "hi"

0 commit comments

Comments
 (0)