| 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. |