Skip to content

Commit 93f3f25

Browse files
authored
ref: Drop experimental logs options in 3.0 (#4653)
Ref #4641, for potel-base
1 parent 01cc131 commit 93f3f25

File tree

7 files changed

+9
-79
lines changed

7 files changed

+9
-79
lines changed

MIGRATION_GUIDE.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ Looking to upgrade from Sentry SDK 2.x to 3.x? Here's a comprehensive list of wh
4040
- `MAX_PROFILE_DURATION_NS`, `PROFILE_MINIMUM_SAMPLES`, `Profile`, `Scheduler`, `ThreadScheduler`, `GeventScheduler`, `has_profiling_enabled`, `setup_profiler`, `teardown_profiler` are no longer accessible from `sentry_sdk.profiler`. They're still accessible from `sentry_sdk.profiler.transaction_profiler`.
4141
- `DEFAULT_SAMPLING_FREQUENCY`, `MAX_STACK_DEPTH`, `get_frame_name`, `extract_frame`, `extract_stack`, `frame_id` are no longer accessible from `sentry_sdk.profiler`. They're still accessible from `sentry_sdk.profiler.utils`.
4242

43+
#### Logs
44+
45+
- `enable_logs` and `before_send_log` are now regular SDK options. Their original versions under `_experiments` have been removed.
4346

4447
#### Integrations
4548
- Redis: In Redis pipeline spans there is no `span["data"]["redis.commands"]` that contains a dict `{"count": 3, "first_ten": ["cmd1", "cmd2", ...]}` but instead `span["data"]["redis.commands.count"]` (containing `3`) and `span["data"]["redis.commands.first_ten"]` (containing `["cmd1", "cmd2", ...]`).

sentry_sdk/client.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
get_default_release,
2323
handle_in_app,
2424
logger,
25-
get_before_send_log,
26-
has_logs_enabled,
2725
)
2826
from sentry_sdk.serializer import serialize
2927
from sentry_sdk.tracing import trace
@@ -326,7 +324,7 @@ def _capture_envelope(envelope: Envelope) -> None:
326324

327325
self.log_batcher = None
328326

329-
if has_logs_enabled(self.options):
327+
if self.options.get("enable_logs") is True:
330328
from sentry_sdk._log_batcher import LogBatcher
331329

332330
self.log_batcher = LogBatcher(capture_func=_capture_envelope)
@@ -823,7 +821,7 @@ def capture_event(
823821
return return_value
824822

825823
def _capture_experimental_log(self, log: Optional[Log]) -> None:
826-
if not has_logs_enabled(self.options) or log is None:
824+
if self.options.get("enable_logs") is not True or log is None:
827825
return
828826

829827
current_scope = sentry_sdk.get_current_scope()
@@ -878,7 +876,7 @@ def _capture_experimental_log(self, log: Optional[Log]) -> None:
878876
f'[Sentry Logs] [{log.get("severity_text")}] {log.get("body")}'
879877
)
880878

881-
before_send_log = get_before_send_log(self.options)
879+
before_send_log = self.options.get("before_send_log")
882880
if before_send_log is not None:
883881
log = before_send_log(log, {})
884882

sentry_sdk/consts.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,6 @@ class CompressionAlgo(Enum):
7878
"transport_compression_algo": Optional[CompressionAlgo],
7979
"transport_num_pools": Optional[int],
8080
"transport_http2": Optional[bool],
81-
"enable_logs": Optional[bool],
82-
"before_send_log": Optional[Callable[[Log, Hint], Optional[Log]]],
8381
},
8482
total=False,
8583
)

sentry_sdk/integrations/logging.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
event_from_exception,
1414
current_stacktrace,
1515
capture_internal_exceptions,
16-
has_logs_enabled,
1716
)
1817
from sentry_sdk.integrations import Integration
1918

@@ -337,7 +336,7 @@ def emit(self, record: LogRecord) -> Any:
337336
if not client.is_active():
338337
return
339338

340-
if not has_logs_enabled(client.options):
339+
if client.options.get("enable_logs") is not True:
341340
return
342341

343342
self._capture_log_from_record(client, record)

sentry_sdk/integrations/loguru.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
_BaseHandler,
1010
)
1111
from sentry_sdk.logger import _log_level_to_otel
12-
from sentry_sdk.utils import has_logs_enabled
1312

1413
from typing import TYPE_CHECKING
1514

@@ -148,7 +147,7 @@ def loguru_sentry_logs_handler(message: Message) -> None:
148147
if not client.is_active():
149148
return
150149

151-
if not has_logs_enabled(client.options):
150+
if client.options.get("enable_logs") is not True:
152151
return
153152

154153
record = message.record

sentry_sdk/utils.py

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
from gevent.hub import Hub as GeventHub
6060
from opentelemetry.util.types import AttributeValue
6161

62-
from sentry_sdk._types import Event, ExcInfo, Log, Hint
62+
from sentry_sdk._types import Event, ExcInfo
6363

6464
P = ParamSpec("P")
6565
R = TypeVar("R")
@@ -1919,24 +1919,3 @@ def serialize_item(item):
19191919
return json.dumps(serialized, default=str)
19201920
except Exception:
19211921
return str(data)
1922-
1923-
1924-
def has_logs_enabled(options):
1925-
# type: (Optional[dict[str, Any]]) -> bool
1926-
if options is None:
1927-
return False
1928-
1929-
return bool(
1930-
options.get("enable_logs", False)
1931-
or options["_experiments"].get("enable_logs", False)
1932-
)
1933-
1934-
1935-
def get_before_send_log(options):
1936-
# type: (Optional[dict[str, Any]]) -> Optional[Callable[[Log, Hint], Optional[Log]]]
1937-
if options is None:
1938-
return None
1939-
1940-
return options.get("before_send_log") or options["_experiments"].get(
1941-
"before_send_log"
1942-
)

tests/test_logs.py

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -111,22 +111,6 @@ def test_logs_basics(sentry_init, capture_envelopes):
111111
assert logs[5].get("severity_number") == 21
112112

113113

114-
@minimum_python_37
115-
def test_logs_experimental_option_still_works(sentry_init, capture_envelopes):
116-
sentry_init(_experiments={"enable_logs": True})
117-
envelopes = capture_envelopes()
118-
119-
sentry_sdk.logger.error("This is an error log...")
120-
121-
get_client().flush()
122-
123-
logs = envelopes_to_logs(envelopes)
124-
assert len(logs) == 1
125-
126-
assert logs[0].get("severity_text") == "error"
127-
assert logs[0].get("severity_number") == 17
128-
129-
130114
@minimum_python_37
131115
def test_logs_before_send_log(sentry_init, capture_envelopes):
132116
before_log_called = False
@@ -174,36 +158,6 @@ def _before_log(record, hint):
174158
assert before_log_called is True
175159

176160

177-
@minimum_python_37
178-
def test_logs_before_send_log_experimental_option_still_works(
179-
sentry_init, capture_envelopes
180-
):
181-
before_log_called = False
182-
183-
def _before_log(record, hint):
184-
nonlocal before_log_called
185-
before_log_called = True
186-
187-
return record
188-
189-
sentry_init(
190-
enable_logs=True,
191-
_experiments={
192-
"before_send_log": _before_log,
193-
},
194-
)
195-
envelopes = capture_envelopes()
196-
197-
sentry_sdk.logger.error("This is an error log...")
198-
199-
get_client().flush()
200-
logs = envelopes_to_logs(envelopes)
201-
assert len(logs) == 1
202-
203-
assert logs[0]["severity_text"] == "error"
204-
assert before_log_called is True
205-
206-
207161
@minimum_python_37
208162
def test_logs_attributes(sentry_init, capture_envelopes):
209163
"""

0 commit comments

Comments
 (0)