Skip to content

Commit 546e47b

Browse files
hectorhdzgxrmxtammy-baylis-swi
authored
[logs-api/sdk] Rename several classes from Log to LogRecord (#4647)
* Rename several classes from Log to LogRecord * Format and changelog * Addressing comments * ruff * Add exports * Fix test * Fix test * Update changelog * Add deprecated classes back --------- Co-authored-by: Riccardo Magliocchetti <[email protected]> Co-authored-by: Tammy Baylis <[email protected]>
1 parent 5ddb8e7 commit 546e47b

File tree

22 files changed

+186
-101
lines changed

22 files changed

+186
-101
lines changed

CHANGELOG.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2323
([#4791](https://github.com/open-telemetry/opentelemetry-python/pull/4791))
2424
- [BREAKING] Remove LogData and extend SDK LogRecord to have instrumentation scope
2525
([#4676](https://github.com/open-telemetry/opentelemetry-python/pull/4676))
26+
- [BREAKING] Rename several classes from Log to LogRecord
27+
([#4647](https://github.com/open-telemetry/opentelemetry-python/pull/4647))
2628

2729
**Migration Guide:**
2830

@@ -32,12 +34,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3234
```python
3335
# Before
3436
from opentelemetry.sdk._logs import LogData
35-
def export(self, batch: Sequence[LogData]) -> LogExportResult:
37+
def export(self, batch: Sequence[LogData]) -> LogRecordExportResult:
3638
...
3739

3840
# After
3941
from opentelemetry.sdk._logs import ReadableLogRecord
40-
def export(self, batch: Sequence[ReadableLogRecord]) -> LogExportResult:
42+
def export(self, batch: Sequence[ReadableLogRecord]) -> LogRecordExportResult:
4143
...
4244
```
4345

@@ -65,7 +67,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6567
- `log_record.log_record` - The API LogRecord (contains body, severity, attributes, etc.)
6668
- `log_record.resource` - The Resource
6769
- `log_record.instrumentation_scope` - The InstrumentationScope (now included, was in LogData before)
68-
- `log_record.limits` - The LogLimits
70+
- `log_record.limits` - The LogRecordLimits
6971

7072
## Version 1.38.0/0.59b0 (2025-10-16)
7173

docs/conf.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,11 @@
145145
"py:class",
146146
"opentelemetry.proto.collector.metrics.v1.metrics_service_pb2.ExportMetricsServiceRequest",
147147
),
148-
("py:class", "opentelemetry.sdk._logs._internal.export.LogExporter"),
149-
("py:class", "opentelemetry.sdk._logs._internal.export.LogExportResult"),
148+
("py:class", "opentelemetry.sdk._logs._internal.export.LogRecordExporter"),
149+
(
150+
"py:class",
151+
"opentelemetry.sdk._logs._internal.export.LogRecordExportResult",
152+
),
150153
(
151154
"py:class",
152155
"opentelemetry.proto.collector.logs.v1.logs_service_pb2.ExportLogsServiceRequest",

exporter/opentelemetry-exporter-otlp-proto-common/tests/test_log_encoder.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
from opentelemetry.proto.resource.v1.resource_pb2 import (
4646
Resource as PB2Resource,
4747
)
48-
from opentelemetry.sdk._logs import LogLimits, ReadWriteLogRecord
48+
from opentelemetry.sdk._logs import LogRecordLimits, ReadWriteLogRecord
4949
from opentelemetry.sdk.resources import Resource as SDKResource
5050
from opentelemetry.sdk.util.instrumentation import InstrumentationScope
5151
from opentelemetry.trace import (
@@ -667,7 +667,7 @@ def _get_test_logs_dropped_attributes() -> List[ReadWriteLogRecord]:
667667
attributes={"a": 1, "b": "c", "user_id": "B121092"},
668668
),
669669
resource=SDKResource({"first_resource": "value"}),
670-
limits=LogLimits(max_attributes=1),
670+
limits=LogRecordLimits(max_attributes=1),
671671
instrumentation_scope=InstrumentationScope(
672672
"first_name", "first_version"
673673
),

exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/_log_exporter/__init__.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@
2929
LogsServiceStub,
3030
)
3131
from opentelemetry.sdk._logs import ReadableLogRecord
32-
from opentelemetry.sdk._logs.export import LogExporter, LogExportResult
32+
from opentelemetry.sdk._logs.export import (
33+
LogRecordExporter,
34+
LogRecordExportResult,
35+
)
3336
from opentelemetry.sdk.environment_variables import (
3437
_OTEL_PYTHON_EXPORTER_OTLP_GRPC_LOGS_CREDENTIAL_PROVIDER,
3538
OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE,
@@ -44,11 +47,11 @@
4447

4548

4649
class OTLPLogExporter(
47-
LogExporter,
50+
LogRecordExporter,
4851
OTLPExporterMixin[
4952
Sequence[ReadableLogRecord],
5053
ExportLogsServiceRequest,
51-
LogExportResult,
54+
LogRecordExportResult,
5255
LogsServiceStub,
5356
],
5457
):
@@ -100,7 +103,7 @@ def __init__(
100103
timeout=timeout or environ_timeout,
101104
compression=compression,
102105
stub=LogsServiceStub,
103-
result=LogExportResult,
106+
result=LogRecordExportResult,
104107
channel_options=channel_options,
105108
)
106109

@@ -112,7 +115,7 @@ def _translate_data(
112115
def export( # type: ignore [reportIncompatibleMethodOverride]
113116
self,
114117
batch: Sequence[ReadableLogRecord],
115-
) -> Literal[LogExportResult.SUCCESS, LogExportResult.FAILURE]:
118+
) -> Literal[LogRecordExportResult.SUCCESS, LogRecordExportResult.FAILURE]:
116119
return OTLPExporterMixin._export(self, batch)
117120

118121
def shutdown(self, timeout_millis: float = 30_000, **kwargs) -> None:

exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/exporter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@
8181
)
8282
from opentelemetry.proto.resource.v1.resource_pb2 import Resource # noqa: F401
8383
from opentelemetry.sdk._logs import ReadableLogRecord
84-
from opentelemetry.sdk._logs.export import LogExportResult
84+
from opentelemetry.sdk._logs.export import LogRecordExportResult
8585
from opentelemetry.sdk._shared_internal import DuplicateFilter
8686
from opentelemetry.sdk.environment_variables import (
8787
_OTEL_PYTHON_EXPORTER_OTLP_GRPC_CREDENTIAL_PROVIDER,
@@ -132,7 +132,7 @@
132132
)
133133
ExportResultT = TypeVar(
134134
"ExportResultT",
135-
LogExportResult,
135+
LogRecordExportResult,
136136
MetricExportResult,
137137
SpanExportResult,
138138
)

exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_exporter_mixin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363

6464

6565
# The below tests use this test SpanExporter and Spans, but are testing the
66-
# underlying behavior in the mixin. A MetricExporter or LogExporter could
66+
# underlying behavior in the mixin. A MetricExporter or LogRecordExporter could
6767
# just as easily be used.
6868
class OTLPSpanExporterForTesting(
6969
SpanExporter,

exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
)
3737
from opentelemetry.sdk._logs import ReadableLogRecord
3838
from opentelemetry.sdk._logs.export import (
39-
LogExporter,
40-
LogExportResult,
39+
LogRecordExporter,
40+
LogRecordExportResult,
4141
)
4242
from opentelemetry.sdk._shared_internal import DuplicateFilter
4343
from opentelemetry.sdk.environment_variables import (
@@ -71,7 +71,7 @@
7171
_MAX_RETRYS = 6
7272

7373

74-
class OTLPLogExporter(LogExporter):
74+
class OTLPLogExporter(LogRecordExporter):
7575
def __init__(
7676
self,
7777
endpoint: Optional[str] = None,
@@ -176,17 +176,19 @@ def _export(
176176
)
177177
return resp
178178

179-
def export(self, batch: Sequence[ReadableLogRecord]) -> LogExportResult:
179+
def export(
180+
self, batch: Sequence[ReadableLogRecord]
181+
) -> LogRecordExportResult:
180182
if self._shutdown:
181183
_logger.warning("Exporter already shutdown, ignoring batch")
182-
return LogExportResult.FAILURE
184+
return LogRecordExportResult.FAILURE
183185

184186
serialized_data = encode_logs(batch).SerializeToString()
185187
deadline_sec = time() + self._timeout
186188
for retry_num in range(_MAX_RETRYS):
187189
resp = self._export(serialized_data, deadline_sec - time())
188190
if resp.ok:
189-
return LogExportResult.SUCCESS
191+
return LogRecordExportResult.SUCCESS
190192
# multiplying by a random number between .8 and 1.2 introduces a +/20% jitter to each backoff.
191193
backoff_seconds = 2**retry_num * random.uniform(0.8, 1.2)
192194
if (
@@ -200,7 +202,7 @@ def export(self, batch: Sequence[ReadableLogRecord]) -> LogExportResult:
200202
resp.status_code,
201203
resp.text,
202204
)
203-
return LogExportResult.FAILURE
205+
return LogRecordExportResult.FAILURE
204206
_logger.warning(
205207
"Transient error %s encountered while exporting logs batch, retrying in %.2fs.",
206208
resp.reason,
@@ -210,7 +212,7 @@ def export(self, batch: Sequence[ReadableLogRecord]) -> LogExportResult:
210212
if shutdown:
211213
_logger.warning("Shutdown in progress, aborting retry.")
212214
break
213-
return LogExportResult.FAILURE
215+
return LogRecordExportResult.FAILURE
214216

215217
def force_flush(self, timeout_millis: float = 10_000) -> bool:
216218
"""Nothing is buffered in this exporter, so this method does nothing."""

exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
ExportLogsServiceRequest,
4141
)
4242
from opentelemetry.sdk._logs import ReadWriteLogRecord
43-
from opentelemetry.sdk._logs.export import LogExportResult
43+
from opentelemetry.sdk._logs.export import LogRecordExportResult
4444
from opentelemetry.sdk.environment_variables import (
4545
_OTEL_PYTHON_EXPORTER_OTLP_HTTP_LOGS_CREDENTIAL_PROVIDER,
4646
OTEL_EXPORTER_OTLP_CERTIFICATE,
@@ -454,7 +454,8 @@ def test_2xx_status_code(self, mock_otlp_metric_exporter):
454454
"""
455455

456456
self.assertEqual(
457-
OTLPLogExporter().export(MagicMock()), LogExportResult.SUCCESS
457+
OTLPLogExporter().export(MagicMock()),
458+
LogRecordExportResult.SUCCESS,
458459
)
459460

460461
@patch.object(Session, "post")
@@ -470,7 +471,7 @@ def test_retry_timeout(self, mock_post):
470471
# Set timeout to 1.5 seconds
471472
self.assertEqual(
472473
exporter.export(self._get_sdk_log_data()),
473-
LogExportResult.FAILURE,
474+
LogRecordExportResult.FAILURE,
474475
)
475476
after = time.time()
476477
# First call at time 0, second at time 1, then an early return before the second backoff sleep b/c it would exceed timeout.

opentelemetry-sdk/benchmarks/logs/test_benchmark_logging_handler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44

55
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
66
from opentelemetry.sdk._logs.export import (
7-
InMemoryLogExporter,
7+
InMemoryLogRecordExporter,
88
SimpleLogRecordProcessor,
99
)
1010

1111

1212
def _set_up_logging_handler(level):
1313
logger_provider = LoggerProvider()
14-
exporter = InMemoryLogExporter()
14+
exporter = InMemoryLogRecordExporter()
1515
processor = SimpleLogRecordProcessor(exporter=exporter)
1616
logger_provider.add_log_record_processor(processor)
1717
handler = LoggingHandler(level=level, logger_provider=logger_provider)

opentelemetry-sdk/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ parentbased_traceidratio = "opentelemetry.sdk.trace.sampling:ParentBasedTraceIdR
4949
sdk_logger_provider = "opentelemetry.sdk._logs:LoggerProvider"
5050

5151
[project.entry-points.opentelemetry_logs_exporter]
52-
console = "opentelemetry.sdk._logs.export:ConsoleLogExporter"
52+
console = "opentelemetry.sdk._logs.export:ConsoleLogRecordExporter"
5353

5454
[project.entry-points.opentelemetry_meter_provider]
5555
sdk_meter_provider = "opentelemetry.sdk.metrics:MeterProvider"

0 commit comments

Comments
 (0)