diff --git a/CHANGELOG.md b/CHANGELOG.md index 19a3434190e..f02d1149694 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ([#4637](https://github.com/open-telemetry/opentelemetry-python/pull/4637)) - Logging API accepts optional `context`; deprecates `trace_id`, `span_id`, `trace_flags`. ([#4597](https://github.com/open-telemetry/opentelemetry-python/pull/4597)) +- Rename several classes from Log to LogRecord + ([#4647](https://github.com/open-telemetry/opentelemetry-python/pull/4647)) ## Version 1.34.0/0.55b0 (2025-06-04) diff --git a/docs/conf.py b/docs/conf.py index 0a739269036..b9de7935e69 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -132,8 +132,11 @@ "py:class", "opentelemetry.proto.collector.metrics.v1.metrics_service_pb2.ExportMetricsServiceRequest", ), - ("py:class", "opentelemetry.sdk._logs._internal.export.LogExporter"), - ("py:class", "opentelemetry.sdk._logs._internal.export.LogExportResult"), + ("py:class", "opentelemetry.sdk._logs._internal.export.LogRecordExporter"), + ( + "py:class", + "opentelemetry.sdk._logs._internal.export.LogRecordExportResult", + ), ( "py:class", "opentelemetry.proto.collector.logs.v1.logs_service_pb2.ExportLogsServiceRequest", diff --git a/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py index 9d713cb7ff0..47d621263b5 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py +++ b/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py @@ -30,14 +30,14 @@ ResourceLogs, ScopeLogs, ) -from opentelemetry.sdk._logs import LogData +from opentelemetry.sdk._logs import LogRecordData -def encode_logs(batch: Sequence[LogData]) -> ExportLogsServiceRequest: +def encode_logs(batch: Sequence[LogRecordData]) -> ExportLogsServiceRequest: return ExportLogsServiceRequest(resource_logs=_encode_resource_logs(batch)) -def _encode_log(log_data: LogData) -> PB2LogRecord: +def _encode_log(log_data: LogRecordData) -> PB2LogRecord: span_id = ( None if log_data.log_record.span_id == 0 @@ -65,7 +65,9 @@ def _encode_log(log_data: LogData) -> PB2LogRecord: ) -def _encode_resource_logs(batch: Sequence[LogData]) -> List[ResourceLogs]: +def _encode_resource_logs( + batch: Sequence[LogRecordData], +) -> List[ResourceLogs]: sdk_resource_logs = defaultdict(lambda: defaultdict(list)) for sdk_log in batch: diff --git a/exporter/opentelemetry-exporter-otlp-proto-common/tests/test_log_encoder.py b/exporter/opentelemetry-exporter-otlp-proto-common/tests/test_log_encoder.py index 4c2b54aad2b..136c06384da 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-common/tests/test_log_encoder.py +++ b/exporter/opentelemetry-exporter-otlp-proto-common/tests/test_log_encoder.py @@ -45,8 +45,8 @@ from opentelemetry.proto.resource.v1.resource_pb2 import ( Resource as PB2Resource, ) -from opentelemetry.sdk._logs import LogData, LogLimits from opentelemetry.sdk._logs import LogRecord as SDKLogRecord +from opentelemetry.sdk._logs import LogRecordData, LogRecordLimits from opentelemetry.sdk.resources import Resource as SDKResource from opentelemetry.sdk.util.instrumentation import InstrumentationScope from opentelemetry.trace import TraceFlags @@ -83,8 +83,8 @@ def test_dropped_attributes_count(self): ) @staticmethod - def _get_sdk_log_data() -> List[LogData]: - log1 = LogData( + def _get_sdk_log_data() -> List[LogRecordData]: + log1 = LogRecordData( log_record=SDKLogRecord( timestamp=1644650195189786880, observed_timestamp=1644650195189786881, @@ -105,7 +105,7 @@ def _get_sdk_log_data() -> List[LogData]: ), ) - log2 = LogData( + log2 = LogRecordData( log_record=SDKLogRecord( timestamp=1644650249738562048, observed_timestamp=1644650249738562049, @@ -123,7 +123,7 @@ def _get_sdk_log_data() -> List[LogData]: ), ) - log3 = LogData( + log3 = LogRecordData( log_record=SDKLogRecord( timestamp=1644650427658989056, observed_timestamp=1644650427658989057, @@ -139,7 +139,7 @@ def _get_sdk_log_data() -> List[LogData]: instrumentation_scope=None, ) - log4 = LogData( + log4 = LogRecordData( log_record=SDKLogRecord( timestamp=1644650584292683008, observed_timestamp=1644650584292683009, @@ -160,7 +160,7 @@ def _get_sdk_log_data() -> List[LogData]: ), ) - log5 = LogData( + log5 = LogRecordData( log_record=SDKLogRecord( timestamp=1644650584292683009, observed_timestamp=1644650584292683010, @@ -178,7 +178,7 @@ def _get_sdk_log_data() -> List[LogData]: ), ) - log6 = LogData( + log6 = LogRecordData( log_record=SDKLogRecord( timestamp=1644650584292683022, observed_timestamp=1644650584292683022, @@ -201,7 +201,7 @@ def _get_sdk_log_data() -> List[LogData]: ), ) - log7 = LogData( + log7 = LogRecordData( log_record=SDKLogRecord( timestamp=1644650584292683033, observed_timestamp=1644650584292683033, @@ -225,7 +225,7 @@ def _get_sdk_log_data() -> List[LogData]: ), ) - log8 = LogData( + log8 = LogRecordData( log_record=SDKLogRecord( timestamp=1644650584292683044, observed_timestamp=1644650584292683044, @@ -543,8 +543,8 @@ def get_test_logs( return sdk_logs, pb2_service_request @staticmethod - def _get_test_logs_dropped_attributes() -> List[LogData]: - log1 = LogData( + def _get_test_logs_dropped_attributes() -> List[LogRecordData]: + log1 = LogRecordData( log_record=SDKLogRecord( timestamp=1644650195189786880, trace_id=89564621134313219400156819398935297684, @@ -555,14 +555,14 @@ def _get_test_logs_dropped_attributes() -> List[LogData]: body="Do not go gentle into that good night. Rage, rage against the dying of the light", resource=SDKResource({"first_resource": "value"}), attributes={"a": 1, "b": "c", "user_id": "B121092"}, - limits=LogLimits(max_attributes=1), + limits=LogRecordLimits(max_attributes=1), ), instrumentation_scope=InstrumentationScope( "first_name", "first_version" ), ) - log2 = LogData( + log2 = LogRecordData( log_record=SDKLogRecord( timestamp=1644650249738562048, trace_id=0, diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/_log_exporter/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/_log_exporter/__init__.py index e66f9dbcca7..34b4c290d11 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/_log_exporter/__init__.py +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/_log_exporter/__init__.py @@ -28,9 +28,12 @@ from opentelemetry.proto.collector.logs.v1.logs_service_pb2_grpc import ( LogsServiceStub, ) -from opentelemetry.sdk._logs import LogData from opentelemetry.sdk._logs import LogRecord as SDKLogRecord -from opentelemetry.sdk._logs.export import LogExporter, LogExportResult +from opentelemetry.sdk._logs import LogRecordData +from opentelemetry.sdk._logs.export import ( + LogRecordExporter, + LogRecordExportResult, +) from opentelemetry.sdk.environment_variables import ( OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE, OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE, @@ -44,10 +47,12 @@ class OTLPLogExporter( - LogExporter, - OTLPExporterMixin[SDKLogRecord, ExportLogsServiceRequest, LogExportResult], + LogRecordExporter, + OTLPExporterMixin[ + SDKLogRecord, ExportLogsServiceRequest, LogRecordExportResult + ], ): - _result = LogExportResult + _result = LogRecordExportResult _stub = LogsServiceStub def __init__( @@ -103,11 +108,11 @@ def __init__( ) def _translate_data( - self, data: Sequence[LogData] + self, data: Sequence[LogRecordData] ) -> ExportLogsServiceRequest: return encode_logs(data) - def export(self, batch: Sequence[LogData]) -> LogExportResult: + def export(self, batch: Sequence[LogRecordData]) -> LogRecordExportResult: return self._export(batch) def shutdown(self, timeout_millis: float = 30_000, **kwargs) -> None: diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/logs/test_otlp_logs_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/logs/test_otlp_logs_exporter.py index 8f3677784b1..c187fcd4dca 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/logs/test_otlp_logs_exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/logs/test_otlp_logs_exporter.py @@ -39,7 +39,7 @@ from opentelemetry.proto.resource.v1.resource_pb2 import ( Resource as OTLPResource, ) -from opentelemetry.sdk._logs import LogData, LogRecord +from opentelemetry.sdk._logs import LogRecord, LogRecordData from opentelemetry.sdk.environment_variables import ( OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE, OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE, @@ -59,7 +59,7 @@ class TestOTLPLogExporter(TestCase): def setUp(self): self.exporter = OTLPLogExporter() - self.log_data_1 = LogData( + self.log_data_1 = LogRecordData( log_record=LogRecord( timestamp=int(time.time() * 1e9), trace_id=2604504634922341076776623263868986797, @@ -75,7 +75,7 @@ def setUp(self): "first_name", "first_version" ), ) - self.log_data_2 = LogData( + self.log_data_2 = LogRecordData( log_record=LogRecord( timestamp=int(time.time() * 1e9), trace_id=2604504634922341076776623263868986799, @@ -91,7 +91,7 @@ def setUp(self): "second_name", "second_version" ), ) - self.log_data_3 = LogData( + self.log_data_3 = LogRecordData( log_record=LogRecord( timestamp=int(time.time() * 1e9), trace_id=2604504634922341076776623263868986800, @@ -106,7 +106,7 @@ def setUp(self): "third_name", "third_version" ), ) - self.log_data_4 = LogData( + self.log_data_4 = LogRecordData( log_record=LogRecord( timestamp=int(time.time() * 1e9), trace_id=0, @@ -121,7 +121,7 @@ def setUp(self): "fourth_name", "fourth_version" ), ) - self.log_data_5 = LogData( + self.log_data_5 = LogRecordData( log_record=LogRecord( timestamp=int(time.time() * 1e9), trace_id=2604504634922341076776623263868986801, diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_exporter_mixin.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_exporter_mixin.py index ae4944456eb..8b5981065d5 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_exporter_mixin.py +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_exporter_mixin.py @@ -61,7 +61,7 @@ # The below tests use this test SpanExporter and Spans, but are testing the -# underlying behavior in the mixin. A MetricExporter or LogExporter could +# underlying behavior in the mixin. A MetricExporter or LogRecordExporter could # just as easily be used. class OTLPSpanExporterForTesting( SpanExporter, diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py index c64f269b9ed..2a98e2c4662 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py +++ b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py @@ -32,10 +32,10 @@ from opentelemetry.exporter.otlp.proto.http._common import ( _is_retryable, ) -from opentelemetry.sdk._logs import LogData +from opentelemetry.sdk._logs import LogRecordData from opentelemetry.sdk._logs.export import ( - LogExporter, - LogExportResult, + LogRecordExporter, + LogRecordExportResult, ) from opentelemetry.sdk.environment_variables import ( OTEL_EXPORTER_OTLP_CERTIFICATE, @@ -65,7 +65,7 @@ _MAX_RETRYS = 6 -class OTLPLogExporter(LogExporter): +class OTLPLogExporter(LogRecordExporter): def __init__( self, endpoint: Optional[str] = None, @@ -156,17 +156,17 @@ def _export(self, serialized_data: bytes, timeout_sec: float): ) return resp - def export(self, batch: Sequence[LogData]) -> LogExportResult: + def export(self, batch: Sequence[LogRecordData]) -> LogRecordExportResult: if self._shutdown: _logger.warning("Exporter already shutdown, ignoring batch") - return LogExportResult.FAILURE + return LogRecordExportResult.FAILURE serialized_data = encode_logs(batch).SerializeToString() deadline_sec = time() + self._timeout for retry_num in range(_MAX_RETRYS): resp = self._export(serialized_data, deadline_sec - time()) if resp.ok: - return LogExportResult.SUCCESS + return LogRecordExportResult.SUCCESS # multiplying by a random number between .8 and 1.2 introduces a +/20% jitter to each backoff. backoff_seconds = 2**retry_num * random.uniform(0.8, 1.2) if ( @@ -179,7 +179,7 @@ def export(self, batch: Sequence[LogData]) -> LogExportResult: resp.status_code, resp.text, ) - return LogExportResult.FAILURE + return LogRecordExportResult.FAILURE _logger.warning( "Transient error %s encountered while exporting logs batch, retrying in %.2fs.", resp.reason, @@ -187,7 +187,7 @@ def export(self, batch: Sequence[LogData]) -> LogExportResult: ) sleep(backoff_seconds) # Not possible to reach here but the linter is complaining. - return LogExportResult.FAILURE + return LogRecordExportResult.FAILURE def force_flush(self, timeout_millis: float = 10_000) -> bool: """Nothing is buffered in this exporter, so this method does nothing.""" diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py index 04c37743860..5402d84bb5e 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py @@ -38,9 +38,9 @@ from opentelemetry.proto.collector.logs.v1.logs_service_pb2 import ( ExportLogsServiceRequest, ) -from opentelemetry.sdk._logs import LogData from opentelemetry.sdk._logs import LogRecord as SDKLogRecord -from opentelemetry.sdk._logs.export import LogExportResult +from opentelemetry.sdk._logs import LogRecordData +from opentelemetry.sdk._logs.export import LogRecordExportResult from opentelemetry.sdk.environment_variables import ( OTEL_EXPORTER_OTLP_CERTIFICATE, OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE, @@ -217,7 +217,7 @@ def export_log_and_deserialize(log): return log_records def test_exported_log_without_trace_id(self): - log = LogData( + log = LogRecordData( log_record=SDKLogRecord( timestamp=1644650195189786182, trace_id=0, @@ -244,7 +244,7 @@ def test_exported_log_without_trace_id(self): self.fail("No log records found") def test_exported_log_without_span_id(self): - log = LogData( + log = LogRecordData( log_record=SDKLogRecord( timestamp=1644650195189786360, trace_id=89564621134313219400156819398935297696, @@ -271,8 +271,8 @@ def test_exported_log_without_span_id(self): self.fail("No log records found") @staticmethod - def _get_sdk_log_data() -> List[LogData]: - log1 = LogData( + def _get_sdk_log_data() -> List[LogRecordData]: + log1 = LogRecordData( log_record=SDKLogRecord( timestamp=1644650195189786880, trace_id=89564621134313219400156819398935297684, @@ -289,7 +289,7 @@ def _get_sdk_log_data() -> List[LogData]: ), ) - log2 = LogData( + log2 = LogRecordData( log_record=SDKLogRecord( timestamp=1644650249738562048, trace_id=0, @@ -306,7 +306,7 @@ def _get_sdk_log_data() -> List[LogData]: ), ) - log3 = LogData( + log3 = LogRecordData( log_record=SDKLogRecord( timestamp=1644650427658989056, trace_id=271615924622795969659406376515024083555, @@ -321,7 +321,7 @@ def _get_sdk_log_data() -> List[LogData]: instrumentation_scope=None, ) - log4 = LogData( + log4 = LogRecordData( log_record=SDKLogRecord( timestamp=1644650584292683008, trace_id=212592107417388365804938480559624925555, @@ -347,7 +347,8 @@ def test_2xx_status_code(self, mock_otlp_metric_exporter): """ self.assertEqual( - OTLPLogExporter().export(MagicMock()), LogExportResult.SUCCESS + OTLPLogExporter().export(MagicMock()), + LogRecordExportResult.SUCCESS, ) @patch.object(Session, "post") @@ -363,7 +364,7 @@ def test_retry_timeout(self, mock_post): # Set timeout to 1.5 seconds self.assertEqual( exporter.export(self._get_sdk_log_data()), - LogExportResult.FAILURE, + LogRecordExportResult.FAILURE, ) after = time.time() # First call at time 0, second at time 1, then an early return before the second backoff sleep b/c it would exceed timeout. diff --git a/opentelemetry-sdk/benchmarks/logs/test_benchmark_logging_handler.py b/opentelemetry-sdk/benchmarks/logs/test_benchmark_logging_handler.py index d1e8c4e39f6..02d665f8b5a 100644 --- a/opentelemetry-sdk/benchmarks/logs/test_benchmark_logging_handler.py +++ b/opentelemetry-sdk/benchmarks/logs/test_benchmark_logging_handler.py @@ -4,14 +4,14 @@ from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler from opentelemetry.sdk._logs.export import ( - InMemoryLogExporter, + InMemoryLogRecordExporter, SimpleLogRecordProcessor, ) def _set_up_logging_handler(level): logger_provider = LoggerProvider() - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() processor = SimpleLogRecordProcessor(exporter=exporter) logger_provider.add_log_record_processor(processor) handler = LoggingHandler(level=level, logger_provider=logger_provider) diff --git a/opentelemetry-sdk/pyproject.toml b/opentelemetry-sdk/pyproject.toml index 705a8b14795..8b0cc9f6575 100644 --- a/opentelemetry-sdk/pyproject.toml +++ b/opentelemetry-sdk/pyproject.toml @@ -49,7 +49,7 @@ parentbased_traceidratio = "opentelemetry.sdk.trace.sampling:ParentBasedTraceIdR sdk_logger_provider = "opentelemetry.sdk._logs:LoggerProvider" [project.entry-points.opentelemetry_logs_exporter] -console = "opentelemetry.sdk._logs.export:ConsoleLogExporter" +console = "opentelemetry.sdk._logs.export:ConsoleLogRecordExporter" [project.entry-points.opentelemetry_meter_provider] sdk_meter_provider = "opentelemetry.sdk.metrics:MeterProvider" diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py index 745a83385f9..e60be33c31e 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py @@ -38,7 +38,10 @@ from opentelemetry.metrics import set_meter_provider from opentelemetry.sdk._events import EventLoggerProvider from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler -from opentelemetry.sdk._logs.export import BatchLogRecordProcessor, LogExporter +from opentelemetry.sdk._logs.export import ( + BatchLogRecordProcessor, + LogRecordExporter, +) from opentelemetry.sdk.environment_variables import ( _OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED, OTEL_EXPORTER_OTLP_LOGS_PROTOCOL, @@ -236,7 +239,7 @@ def _init_metrics( def _init_logging( - exporters: dict[str, Type[LogExporter]], + exporters: dict[str, Type[LogRecordExporter]], resource: Resource | None = None, setup_logging_handler: bool = True, ): @@ -287,7 +290,7 @@ def _import_exporters( ) -> tuple[ dict[str, Type[SpanExporter]], dict[str, Union[Type[MetricExporter], Type[MetricReader]]], - dict[str, Type[LogExporter]], + dict[str, Type[LogRecordExporter]], ]: trace_exporters = {} metric_exporters = {} @@ -323,7 +326,7 @@ def _import_exporters( ) in _import_config_components( log_exporter_names, "opentelemetry_logs_exporter" ): - if issubclass(exporter_impl, LogExporter): + if issubclass(exporter_impl, LogRecordExporter): log_exporters[exporter_name] = exporter_impl else: raise RuntimeError(f"{exporter_name} is not a log exporter") diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py index dbb108b7dba..ab6ccba89e7 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py @@ -14,25 +14,25 @@ from opentelemetry.sdk._logs._internal import ( - LogData, - LogDeprecatedInitWarning, - LogDroppedAttributesWarning, Logger, LoggerProvider, LoggingHandler, - LogLimits, LogRecord, + LogRecordData, + LogRecordDeprecatedInitWarning, + LogRecordDroppedAttributesWarning, + LogRecordLimits, LogRecordProcessor, ) __all__ = [ - "LogData", "Logger", "LoggerProvider", "LoggingHandler", - "LogLimits", + "LogRecordData", + "LogRecordLimits", "LogRecord", "LogRecordProcessor", - "LogDeprecatedInitWarning", - "LogDroppedAttributesWarning", + "LogRecordDeprecatedInitWarning", + "LogRecordDroppedAttributesWarning", ] diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py index 8201b6c78f0..76c64ad64ca 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py @@ -71,7 +71,7 @@ def default(self, o): return super().default(o) -class LogDroppedAttributesWarning(UserWarning): +class LogRecordDroppedAttributesWarning(UserWarning): """Custom warning to indicate dropped log attributes due to limits. This class is used to filter and handle these specific warnings separately @@ -80,10 +80,10 @@ class LogDroppedAttributesWarning(UserWarning): """ -warnings.simplefilter("once", LogDroppedAttributesWarning) +warnings.simplefilter("once", LogRecordDroppedAttributesWarning) -class LogDeprecatedInitWarning(UserWarning): +class LogRecordDeprecatedInitWarning(UserWarning): """Custom warning to indicate deprecated LogRecord init was used. This class is used to filter and handle these specific warnings separately @@ -92,10 +92,10 @@ class LogDeprecatedInitWarning(UserWarning): """ -warnings.simplefilter("once", LogDeprecatedInitWarning) +warnings.simplefilter("once", LogRecordDeprecatedInitWarning) -class LogLimits: +class LogRecordLimits: """This class is based on a SpanLimits class in the Tracing module. This class represents the limits that should be enforced on recorded data such as events, links, attributes etc. @@ -103,7 +103,7 @@ class LogLimits: This class does not enforce any limits itself. It only provides a way to read limits from env, default values and from user provided arguments. - All limit arguments must be either a non-negative integer, ``None`` or ``LogLimits.UNSET``. + All limit arguments must be either a non-negative integer, ``None`` or ``LogRecordLimits.UNSET``. - All limit arguments are optional. - If a limit argument is not set, the class will try to read its value from the corresponding @@ -180,9 +180,9 @@ def _from_env_if_absent( return value -_UnsetLogLimits = LogLimits( - max_attributes=LogLimits.UNSET, - max_attribute_length=LogLimits.UNSET, +_UnsetLogLimits = LogRecordLimits( + max_attributes=LogRecordLimits.UNSET, + max_attribute_length=LogRecordLimits.UNSET, ) @@ -205,7 +205,7 @@ def __init__( body: AnyValue | None = None, resource: Resource | None = None, attributes: _ExtendedAttributes | None = None, - limits: LogLimits | None = _UnsetLogLimits, + limits: LogRecordLimits | None = _UnsetLogLimits, ): ... @overload @@ -221,7 +221,7 @@ def __init__( body: AnyValue | None = None, resource: Resource | None = None, attributes: _ExtendedAttributes | None = None, - limits: LogLimits | None = _UnsetLogLimits, + limits: LogRecordLimits | None = _UnsetLogLimits, ): ... def __init__( @@ -237,12 +237,12 @@ def __init__( body: AnyValue | None = None, resource: Resource | None = None, attributes: _ExtendedAttributes | None = None, - limits: LogLimits | None = _UnsetLogLimits, + limits: LogRecordLimits | None = _UnsetLogLimits, ): if trace_id or span_id or trace_flags: warnings.warn( "LogRecord init with `trace_id`, `span_id`, and/or `trace_flags` is deprecated. Use `context` instead.", - LogDeprecatedInitWarning, + LogRecordDeprecatedInitWarning, stacklevel=2, ) @@ -283,7 +283,7 @@ def __init__( if self.dropped_attributes > 0: warnings.warn( "Log record attributes were dropped due to limits", - LogDroppedAttributesWarning, + LogRecordDroppedAttributesWarning, stacklevel=2, ) @@ -333,7 +333,7 @@ def dropped_attributes(self) -> int: return 0 -class LogData: +class LogRecordData: """Readable LogRecord data plus associated InstrumentationLibrary.""" def __init__( @@ -354,8 +354,8 @@ class LogRecordProcessor(abc.ABC): """ @abc.abstractmethod - def emit(self, log_data: LogData): - """Emits the `LogData`""" + def emit(self, log_data: LogRecordData): + """Emits the `LogRecordData`""" @abc.abstractmethod def shutdown(self): @@ -398,7 +398,7 @@ def add_log_record_processor( with self._lock: self._log_record_processors += (log_record_processor,) - def emit(self, log_data: LogData) -> None: + def emit(self, log_data: LogRecordData) -> None: for lp in self._log_record_processors: lp.emit(log_data) @@ -472,7 +472,7 @@ def _submit_and_wait( for future in futures: future.result() - def emit(self, log_data: LogData): + def emit(self, log_data: LogRecordData): self._submit_and_wait(lambda lp: lp.emit, log_data) def shutdown(self): @@ -676,10 +676,10 @@ def resource(self): return self._resource def emit(self, record: LogRecord): - """Emits the :class:`LogData` by associating :class:`LogRecord` + """Emits the :class:`LogRecordData` by associating :class:`LogRecord` and instrumentation info. """ - log_data = LogData(record, self._instrumentation_scope) + log_data = LogRecordData(record, self._instrumentation_scope) self._multi_log_record_processor.emit(log_data) diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py index 71cd2ed931b..225571a096f 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py @@ -26,7 +26,11 @@ detach, set_value, ) -from opentelemetry.sdk._logs import LogData, LogRecord, LogRecordProcessor +from opentelemetry.sdk._logs import ( + LogRecord, + LogRecordData, + LogRecordProcessor, +) from opentelemetry.sdk._shared_internal import BatchProcessor from opentelemetry.sdk.environment_variables import ( OTEL_BLRP_EXPORT_TIMEOUT, @@ -45,12 +49,12 @@ _logger = logging.getLogger(__name__) -class LogExportResult(enum.Enum): +class LogRecordExportResult(enum.Enum): SUCCESS = 0 FAILURE = 1 -class LogExporter(abc.ABC): +class LogRecordExporter(abc.ABC): """Interface for exporting logs. Interface to be implemented by services that want to export logs received in their own format. @@ -59,10 +63,10 @@ class LogExporter(abc.ABC): """ @abc.abstractmethod - def export(self, batch: Sequence[LogData]): + def export(self, batch: Sequence[LogRecordData]): """Exports a batch of logs. Args: - batch: The list of `LogData` objects to be exported + batch: The list of `LogRecordData` objects to be exported Returns: The result of the export """ @@ -75,8 +79,8 @@ def shutdown(self): """ -class ConsoleLogExporter(LogExporter): - """Implementation of :class:`LogExporter` that prints log records to the +class ConsoleLogRecordExporter(LogRecordExporter): + """Implementation of :class:`LogRecordExporter` that prints log records to the console. This class can be used for diagnostic purposes. It prints the exported @@ -92,11 +96,11 @@ def __init__( self.out = out self.formatter = formatter - def export(self, batch: Sequence[LogData]): + def export(self, batch: Sequence[LogRecordData]): for data in batch: self.out.write(self.formatter(data.log_record)) self.out.flush() - return LogExportResult.SUCCESS + return LogRecordExportResult.SUCCESS def shutdown(self): pass @@ -104,15 +108,15 @@ def shutdown(self): class SimpleLogRecordProcessor(LogRecordProcessor): """This is an implementation of LogRecordProcessor which passes - received logs in the export-friendly LogData representation to the - configured LogExporter, as soon as they are emitted. + received logs in the export-friendly LogRecordData representation to the + configured LogRecordExporter, as soon as they are emitted. """ - def __init__(self, exporter: LogExporter): + def __init__(self, exporter: LogRecordExporter): self._exporter = exporter self._shutdown = False - def emit(self, log_data: LogData): + def emit(self, log_data: LogRecordData): if self._shutdown: _logger.warning("Processor is already shutdown, ignoring call") return @@ -133,8 +137,8 @@ def force_flush(self, timeout_millis: int = 30000) -> bool: # pylint: disable=n class BatchLogRecordProcessor(LogRecordProcessor): """This is an implementation of LogRecordProcessor which creates batches of - received logs in the export-friendly LogData representation and - send to the configured LogExporter, as soon as they are emitted. + received logs in the export-friendly LogRecordData representation and + send to the configured LogRecordExporter, as soon as they are emitted. `BatchLogRecordProcessor` is configurable with the following environment variables which correspond to constructor parameters: @@ -149,7 +153,7 @@ class BatchLogRecordProcessor(LogRecordProcessor): def __init__( self, - exporter: LogExporter, + exporter: LogRecordExporter, schedule_delay_millis: float | None = None, max_export_batch_size: int | None = None, export_timeout_millis: float | None = None, @@ -186,7 +190,7 @@ def __init__( "Log", ) - def emit(self, log_data: LogData) -> None: + def emit(self, log_data: LogRecordData) -> None: return self._batch_processor.emit(log_data) def shutdown(self): diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/in_memory_log_exporter.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/in_memory_log_exporter.py index 68cb6b7389a..0d65bd82102 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/in_memory_log_exporter.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/in_memory_log_exporter.py @@ -15,12 +15,15 @@ import threading import typing -from opentelemetry.sdk._logs import LogData -from opentelemetry.sdk._logs.export import LogExporter, LogExportResult +from opentelemetry.sdk._logs import LogRecordData +from opentelemetry.sdk._logs.export import ( + LogRecordExporter, + LogRecordExportResult, +) -class InMemoryLogExporter(LogExporter): - """Implementation of :class:`.LogExporter` that stores logs in memory. +class InMemoryLogRecordExporter(LogRecordExporter): + """Implementation of :class:`.LogRecordExporter` that stores logs in memory. This class can be used for testing purposes. It stores the exported logs in a list in memory that can be retrieved using the @@ -36,16 +39,18 @@ def clear(self) -> None: with self._lock: self._logs.clear() - def get_finished_logs(self) -> typing.Tuple[LogData, ...]: + def get_finished_logs(self) -> typing.Tuple[LogRecordData, ...]: with self._lock: return tuple(self._logs) - def export(self, batch: typing.Sequence[LogData]) -> LogExportResult: + def export( + self, batch: typing.Sequence[LogRecordData] + ) -> LogRecordExportResult: if self._stopped: - return LogExportResult.FAILURE + return LogRecordExportResult.FAILURE with self._lock: self._logs.extend(batch) - return LogExportResult.SUCCESS + return LogRecordExportResult.SUCCESS def shutdown(self) -> None: self._stopped = True diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/export/__init__.py index 37a9eca7a08..f4f8a62658c 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/export/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/export/__init__.py @@ -14,22 +14,22 @@ from opentelemetry.sdk._logs._internal.export import ( BatchLogRecordProcessor, - ConsoleLogExporter, - LogExporter, - LogExportResult, + ConsoleLogRecordExporter, + LogRecordExporter, + LogRecordExportResult, SimpleLogRecordProcessor, ) # The point module is not in the export directory to avoid a circular import. from opentelemetry.sdk._logs._internal.export.in_memory_log_exporter import ( - InMemoryLogExporter, + InMemoryLogRecordExporter, ) __all__ = [ "BatchLogRecordProcessor", - "ConsoleLogExporter", - "LogExporter", - "LogExportResult", + "ConsoleLogRecordExporter", + "LogRecordExporter", + "LogRecordExportResult", "SimpleLogRecordProcessor", - "InMemoryLogExporter", + "InMemoryLogRecordExporter", ] diff --git a/opentelemetry-sdk/tests/logs/test_export.py b/opentelemetry-sdk/tests/logs/test_export.py index 4f24d5d1639..93a37759113 100644 --- a/opentelemetry-sdk/tests/logs/test_export.py +++ b/opentelemetry-sdk/tests/logs/test_export.py @@ -26,16 +26,16 @@ from opentelemetry._logs import SeverityNumber from opentelemetry.sdk import trace from opentelemetry.sdk._logs import ( - LogData, LoggerProvider, LoggingHandler, LogRecord, + LogRecordData, ) from opentelemetry.sdk._logs._internal.export import _logger from opentelemetry.sdk._logs.export import ( BatchLogRecordProcessor, - ConsoleLogExporter, - InMemoryLogExporter, + ConsoleLogRecordExporter, + InMemoryLogRecordExporter, SimpleLogRecordProcessor, ) from opentelemetry.sdk.environment_variables import ( @@ -49,7 +49,7 @@ from opentelemetry.trace import TraceFlags from opentelemetry.trace.span import INVALID_SPAN_CONTEXT -EMPTY_LOG = LogData( +EMPTY_LOG = LogRecordData( log_record=LogRecord(), instrumentation_scope=InstrumentationScope("example", "example"), ) @@ -57,7 +57,7 @@ class TestSimpleLogRecordProcessor(unittest.TestCase): def test_simple_log_record_processor_default_level(self): - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() logger_provider = LoggerProvider() logger_provider.add_log_record_processor( @@ -82,7 +82,7 @@ def test_simple_log_record_processor_default_level(self): ) def test_simple_log_record_processor_custom_level(self): - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() logger_provider = LoggerProvider() logger_provider.add_log_record_processor( @@ -121,7 +121,7 @@ def test_simple_log_record_processor_custom_level(self): ) def test_simple_log_record_processor_trace_correlation(self): - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() logger_provider = LoggerProvider() logger_provider.add_log_record_processor( @@ -168,7 +168,7 @@ def test_simple_log_record_processor_trace_correlation(self): self.assertEqual(log_record.trace_flags, span_context.trace_flags) def test_simple_log_record_processor_shutdown(self): - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() logger_provider = LoggerProvider() logger_provider.add_log_record_processor( @@ -198,7 +198,7 @@ def test_simple_log_record_processor_shutdown(self): self.assertEqual(len(finished_logs), 0) def test_simple_log_record_processor_different_msg_types(self): - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() log_record_processor = BatchLogRecordProcessor(exporter) provider = LoggerProvider() @@ -240,7 +240,7 @@ def test_simple_log_record_processor_custom_single_obj(self): Tests that special-case handling for logging a single non-string object is correctly applied. """ - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() log_record_processor = BatchLogRecordProcessor(exporter) provider = LoggerProvider() @@ -284,7 +284,7 @@ def test_simple_log_record_processor_custom_single_obj(self): def test_simple_log_record_processor_different_msg_types_with_formatter( self, ): - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() log_record_processor = BatchLogRecordProcessor(exporter) provider = LoggerProvider() @@ -338,7 +338,7 @@ def test_simple_log_record_processor_different_msg_types_with_formatter( # to run after the end of the test. class TestBatchLogRecordProcessor(unittest.TestCase): def test_emit_call_log_record(self): - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() log_record_processor = Mock(wraps=BatchLogRecordProcessor(exporter)) provider = LoggerProvider() provider.add_log_record_processor(log_record_processor) @@ -352,7 +352,7 @@ def test_emit_call_log_record(self): log_record_processor.shutdown() def test_with_multiple_threads(self): # pylint: disable=no-self-use - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() batch_processor = BatchLogRecordProcessor( exporter, max_queue_size=3000, @@ -412,7 +412,7 @@ def test_logging_lib_not_invoked_in_batch_log_record_emit(self): # pylint: disa sdk_logger.removeHandler(handler) def test_args(self): - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() log_record_processor = BatchLogRecordProcessor( exporter, max_queue_size=1024, @@ -447,7 +447,7 @@ def test_args(self): }, ) def test_env_vars(self): - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() log_record_processor = BatchLogRecordProcessor(exporter) self.assertEqual( log_record_processor._batch_processor._exporter, exporter @@ -467,7 +467,7 @@ def test_env_vars(self): log_record_processor.shutdown() def test_args_defaults(self): - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() log_record_processor = BatchLogRecordProcessor(exporter) self.assertEqual( log_record_processor._batch_processor._exporter, exporter @@ -496,7 +496,7 @@ def test_args_defaults(self): }, ) def test_args_env_var_value_error(self): - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() _logger.disabled = True log_record_processor = BatchLogRecordProcessor(exporter) _logger.disabled = False @@ -518,7 +518,7 @@ def test_args_env_var_value_error(self): log_record_processor.shutdown() def test_args_none_defaults(self): - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() log_record_processor = BatchLogRecordProcessor( exporter, max_queue_size=None, @@ -544,7 +544,7 @@ def test_args_none_defaults(self): log_record_processor.shutdown() def test_validation_negative_max_queue_size(self): - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() self.assertRaises( ValueError, BatchLogRecordProcessor, @@ -593,7 +593,7 @@ def test_validation_negative_max_queue_size(self): class TestConsoleLogExporter(unittest.TestCase): def test_export(self): # pylint: disable=no-self-use """Check that the console exporter prints log records.""" - log_data = LogData( + log_data = LogRecordData( log_record=LogRecord( timestamp=int(time.time() * 1e9), trace_id=2604504634922341076776623263868986797, @@ -609,7 +609,7 @@ def test_export(self): # pylint: disable=no-self-use "first_name", "first_version" ), ) - exporter = ConsoleLogExporter() + exporter = ConsoleLogRecordExporter() # Mocking stdout interferes with debugging and test reporting, mock on # the exporter instance instead. @@ -630,7 +630,9 @@ def formatter(record): # pylint: disable=unused-argument return mock_record_str mock_stdout = Mock() - exporter = ConsoleLogExporter(out=mock_stdout, formatter=formatter) + exporter = ConsoleLogRecordExporter( + out=mock_stdout, formatter=formatter + ) exporter.export([EMPTY_LOG]) mock_stdout.write.assert_called_once_with(mock_record_str) diff --git a/opentelemetry-sdk/tests/logs/test_handler.py b/opentelemetry-sdk/tests/logs/test_handler.py index ead090a77cc..54ace8fb5ef 100644 --- a/opentelemetry-sdk/tests/logs/test_handler.py +++ b/opentelemetry-sdk/tests/logs/test_handler.py @@ -22,9 +22,9 @@ from opentelemetry.attributes import BoundedAttributes from opentelemetry.sdk import trace from opentelemetry.sdk._logs import ( - LogData, LoggerProvider, LoggingHandler, + LogRecordData, LogRecordProcessor, ) from opentelemetry.semconv._incubating.attributes import code_attributes @@ -384,7 +384,7 @@ class FakeProcessor(LogRecordProcessor): def __init__(self): self.log_data_emitted = [] - def emit(self, log_data: LogData): + def emit(self, log_data: LogRecordData): self.log_data_emitted.append(log_data) def shutdown(self): diff --git a/opentelemetry-sdk/tests/logs/test_log_limits.py b/opentelemetry-sdk/tests/logs/test_log_limits.py index 82a7ce9b4d6..63ea2e63542 100644 --- a/opentelemetry-sdk/tests/logs/test_log_limits.py +++ b/opentelemetry-sdk/tests/logs/test_log_limits.py @@ -15,7 +15,7 @@ import unittest from unittest.mock import patch -from opentelemetry.sdk._logs import LogLimits +from opentelemetry.sdk._logs import LogRecordLimits from opentelemetry.sdk._logs._internal import ( _DEFAULT_OTEL_ATTRIBUTE_COUNT_LIMIT, ) @@ -27,20 +27,20 @@ class TestLogLimits(unittest.TestCase): def test_log_limits_repr_unset(self): - expected = f"LogLimits(max_attributes={_DEFAULT_OTEL_ATTRIBUTE_COUNT_LIMIT}, max_attribute_length=None)" - limits = str(LogLimits()) + expected = f"LogRecordLimits(max_attributes={_DEFAULT_OTEL_ATTRIBUTE_COUNT_LIMIT}, max_attribute_length=None)" + limits = str(LogRecordLimits()) self.assertEqual(expected, limits) def test_log_limits_max_attributes(self): expected = 1 - limits = LogLimits(max_attributes=1) + limits = LogRecordLimits(max_attributes=1) self.assertEqual(expected, limits.max_attributes) def test_log_limits_max_attribute_length(self): expected = 1 - limits = LogLimits(max_attribute_length=1) + limits = LogRecordLimits(max_attribute_length=1) self.assertEqual(expected, limits.max_attribute_length) @@ -62,7 +62,7 @@ def test_invalid_env_vars_raise(self): with self.assertRaises(ValueError) as error, patch.dict( "os.environ", {env_var: bad_value}, clear=True ): - LogLimits() + LogRecordLimits() expected_msg = f"{env_var} must be a non-negative integer but got {bad_value}" self.assertEqual( diff --git a/opentelemetry-sdk/tests/logs/test_log_record.py b/opentelemetry-sdk/tests/logs/test_log_record.py index d7aa0faa649..f5aca59fa49 100644 --- a/opentelemetry-sdk/tests/logs/test_log_record.py +++ b/opentelemetry-sdk/tests/logs/test_log_record.py @@ -20,10 +20,10 @@ from opentelemetry.attributes import BoundedAttributes from opentelemetry.context import get_current from opentelemetry.sdk._logs import ( - LogDeprecatedInitWarning, - LogDroppedAttributesWarning, - LogLimits, LogRecord, + LogRecordDeprecatedInitWarning, + LogRecordDroppedAttributesWarning, + LogRecordLimits, ) from opentelemetry.sdk.resources import Resource from opentelemetry.trace.span import TraceFlags @@ -77,7 +77,7 @@ def test_log_record_dropped_attributes_empty_limits(self): def test_log_record_dropped_attributes_set_limits_max_attribute(self): attr = {"key": "value", "key2": "value2"} - limits = LogLimits( + limits = LogRecordLimits( max_attributes=1, ) @@ -91,7 +91,7 @@ def test_log_record_dropped_attributes_set_limits_max_attribute_length( ): attr = {"key": "value", "key2": "value2"} expected = {"key": "v", "key2": "v"} - limits = LogLimits( + limits = LogRecordLimits( max_attribute_length=1, ) @@ -104,7 +104,7 @@ def test_log_record_dropped_attributes_set_limits_max_attribute_length( def test_log_record_dropped_attributes_set_limits(self): attr = {"key": "value", "key2": "value2"} expected = {"key2": "v"} - limits = LogLimits( + limits = LogRecordLimits( max_attributes=1, max_attribute_length=1, ) @@ -117,7 +117,7 @@ def test_log_record_dropped_attributes_set_limits(self): def test_log_record_dropped_attributes_set_limits_warning_once(self): attr = {"key1": "value1", "key2": "value2"} - limits = LogLimits( + limits = LogRecordLimits( max_attributes=1, max_attribute_length=1, ) @@ -131,7 +131,9 @@ def test_log_record_dropped_attributes_set_limits_warning_once(self): limits=limits, ) self.assertEqual(len(cw), 1) - self.assertIsInstance(cw[-1].message, LogDroppedAttributesWarning) + self.assertIsInstance( + cw[-1].message, LogRecordDroppedAttributesWarning + ) self.assertIn( "Log record attributes were dropped due to limits", str(cw[-1].message), @@ -139,7 +141,7 @@ def test_log_record_dropped_attributes_set_limits_warning_once(self): def test_log_record_dropped_attributes_unset_limits(self): attr = {"key": "value", "key2": "value2"} - limits = LogLimits() + limits = LogRecordLimits() result = LogRecord( timestamp=0, body="a log line", attributes=attr, limits=limits @@ -161,7 +163,9 @@ def test_log_record_deprecated_init_warning(self): LogRecord(**params) self.assertEqual(len(cw), 1) - self.assertIsInstance(cw[-1].message, LogDeprecatedInitWarning) + self.assertIsInstance( + cw[-1].message, LogRecordDeprecatedInitWarning + ) self.assertIn( "LogRecord init with `trace_id`, `span_id`, and/or `trace_flags` is deprecated. Use `context` instead.", str(cw[-1].message), diff --git a/opentelemetry-sdk/tests/logs/test_logger_provider_cache.py b/opentelemetry-sdk/tests/logs/test_logger_provider_cache.py index 3583148b41a..83f1bbb14a7 100644 --- a/opentelemetry-sdk/tests/logs/test_logger_provider_cache.py +++ b/opentelemetry-sdk/tests/logs/test_logger_provider_cache.py @@ -3,14 +3,14 @@ from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler from opentelemetry.sdk._logs.export import ( - InMemoryLogExporter, + InMemoryLogRecordExporter, SimpleLogRecordProcessor, ) def set_up_logging_handler(level): logger_provider = LoggerProvider() - exporter = InMemoryLogExporter() + exporter = InMemoryLogRecordExporter() processor = SimpleLogRecordProcessor(exporter=exporter) logger_provider.add_log_record_processor(processor) handler = LoggingHandler(level=level, logger_provider=logger_provider) diff --git a/opentelemetry-sdk/tests/shared_internal/test_batch_processor.py b/opentelemetry-sdk/tests/shared_internal/test_batch_processor.py index 4888d81779d..f19b9c2627d 100644 --- a/opentelemetry-sdk/tests/shared_internal/test_batch_processor.py +++ b/opentelemetry-sdk/tests/shared_internal/test_batch_processor.py @@ -25,8 +25,8 @@ import pytest from opentelemetry.sdk._logs import ( - LogData, LogRecord, + LogRecordData, ) from opentelemetry.sdk._logs.export import ( BatchLogRecordProcessor, @@ -35,7 +35,7 @@ from opentelemetry.sdk.trace.export import BatchSpanProcessor from opentelemetry.sdk.util.instrumentation import InstrumentationScope -EMPTY_LOG = LogData( +EMPTY_LOG = LogRecordData( log_record=LogRecord(), instrumentation_scope=InstrumentationScope("example", "example"), ) diff --git a/opentelemetry-sdk/tests/test_configurator.py b/opentelemetry-sdk/tests/test_configurator.py index 9fda75b66f0..bbe592c71af 100644 --- a/opentelemetry-sdk/tests/test_configurator.py +++ b/opentelemetry-sdk/tests/test_configurator.py @@ -45,8 +45,8 @@ _OTelSDKConfigurator, ) from opentelemetry.sdk._logs import LoggingHandler -from opentelemetry.sdk._logs._internal.export import LogExporter -from opentelemetry.sdk._logs.export import ConsoleLogExporter +from opentelemetry.sdk._logs._internal.export import LogRecordExporter +from opentelemetry.sdk._logs.export import ConsoleLogRecordExporter from opentelemetry.sdk.environment_variables import ( OTEL_TRACES_SAMPLER, OTEL_TRACES_SAMPLER_ARG, @@ -205,7 +205,7 @@ class OTLPSpanExporter: pass -class DummyOTLPLogExporter(LogExporter): +class DummyOTLPLogExporter(LogRecordExporter): def __init__(self, *args, **kwargs): self.export_called = False @@ -1056,7 +1056,8 @@ def test_console_exporters(self): trace_exporters["console"].__class__, ConsoleSpanExporter.__class__ ) self.assertEqual( - logs_exporters["console"].__class__, ConsoleLogExporter.__class__ + logs_exporters["console"].__class__, + ConsoleLogRecordExporter.__class__, ) self.assertEqual( metric_exporterts["console"].__class__,