Logs

This file tracks compliance for the OpenTelemetry logs specification in this repository.

Scope

Module mapping

logs/sdk.md checklist

Area Requirement Status Evidence Notes
LoggerProvider Builder supports resource, processors, limits Compliant SdkLoggerProvider.scala, SdkLoggerProvider.scala, SdkLoggerProviderSuite.scala Builder applies resource, limits, and processor pipeline to created SDK loggers.
LoggerProvider Default config and no-op behavior Compliant SdkLoggerProvider.scala, SdkLoggerProvider.scala, SdkLoggerProviderSuite.scala Default builder falls back to LoggerProvider.noop when no processors are configured.
LogRecordProcessor Interface + forceFlush Partial LogRecordProcessor.scala, SimpleLogRecordProcessor.scala, BatchLogRecordProcessor.scala, BatchLogRecordProcessor.scala, BatchLogRecordProcessorSuite.scala forceFlush exists and is serialized with background batch processing and export, but built-in processors do not invoke exporter-level flush semantics from the spec.
LogRecordProcessor Simple + Batch processors Compliant SimpleLogRecordProcessor.scala, BatchLogRecordProcessor.scala, BatchLogRecordProcessor.scala, BatchLogRecordProcessorSuite.scala Both required built-in processors actively export records; tests cover prompt consecutive batches and serialization when forceFlush overlaps a worker export.
LogRecordProcessor Shutdown support Partial BatchLogRecordProcessor.scala, BatchLogRecordProcessor.scala, SimpleLogRecordProcessor.scala Cleanup is Resource-driven and the batch finalizer invokes serialized forceFlush; the processor API has no explicit shutdown operation.
LogExporter Interface + no-op + composite Partial LogRecordExporter.scala, LogRecordExporter.scala, LogRecordExporter.scala, LogRecordExporterSuite.scala No-op and composite exporters are implemented; flush provides force-flush behavior, but explicit exporter shutdown is missing.
LogRecord limits Attribute/value limits + drop behavior Compliant SdkLogRecordBuilder.scala, LogsProtoEncoder.scala, BatchLogRecordProcessor.scala, LogRecordLimitsAutoConfigure.scala, AttributeLimitsConfigurer.scala, LogRecordLimitsAutoConfigureSuite.scala Attribute limits are enforced via bounded LimitedData; dropped attribute count and queue-drop behavior are surfaced; SDK autoconfiguration supports OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT and OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT with global OTEL_ATTRIBUTE_* fallback.
LogRecord data model Mapping to spec fields Compliant SdkLogRecordBuilder.scala, LogsProtoEncoder.scala, SdkLogRecordBuilderSuite.scala SDK record construction and OTLP mapping cover timestamp/observed timestamp, context, severity, body, event name, attributes, scope, and resource.

logs/data-model.md checklist

Area Requirement Status Evidence Notes
Log data types LogRecord, severity, attributes, timestamps Compliant SdkLogRecordBuilder.scala, LogsProtoEncoder.scala, SdkLogRecordBuilderSuite.scala Core fields are populated by the SDK builder and encoded to OTLP with nanos precision and trace flags.
Body types AnyValue mapping Compliant LogsProtoEncoder.scala, LogsProtoEncoder.scala, LogsProtoEncoderSuite.scala AnyValue scalar/array/map/bytes/empty variants are mapped and validated by encoder tests.

logs/sdk_exporters

Area Requirement Status Evidence Notes
SDK Exporter stdout.md Compliant ConsoleLogRecordExporter.scala, LoggerProviderAutoConfigure.scala, ConsoleLogRecordExporterSuite.scala Console exporter is implemented, tested, and autoconfigured with a simple processor when selected.
SDK Exporter otlp.md Partial OtlpLogRecordExporter.scala, OtlpLogRecordExporter.scala, OtlpLogRecordExporterAutoConfigure.scala, OtlpLogRecordExporterSuite.scala OTLP export path and autoconfiguration are present; full protocol-wide compliance in protocol/otlp.md is broader than this checklist row and remains partially covered.

Cross-cutting specs