Skip to content

oss_21_logger_provider_log_record_limits #37

Open

Description

@ocelotl

LoggerProvider must accept a LogRecordLimits/limits parameter (like TracerProvider's SpanLimits) and thread it into log-record creation, so log limits can be set programmatically (Linear OSS-21, finding L2).

Branch / worktree: oss_21_logger_provider_log_record_limits

Linear issue: https://linear.app/dash0/issue/OSS-21/l2-loggerprovider-cannot-configure-logrecordlimits-programmatically

Activity

  1. ocelotl commented on Jul 22, 2026

    @ocelotl
    OwnerAuthor

    🔒 Internal (dash0) — not for upstream.

  2. ocelotl commented on Jul 22, 2026

    @ocelotl
    OwnerAuthor

    📣 Public-facing draft — to be opened upstream in open-telemetry/opentelemetry-python. No internal references; copy verbatim.

    Title: LoggerProvider does not accept programmatic LogRecordLimits (unlike TracerProvider/SpanLimits)

    SpanLimits can be configured programmatically via TracerProvider(span_limits=...). The logs SDK has an equivalent LogRecordLimits type (opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py) and applies it in ReadWriteLogRecord.__post_init__, but LoggerProvider.__init__ has no limits parameter. As a result ReadWriteLogRecord._from_api_log_record never passes a limits value, so emitted log records always use the default LogRecordLimits, and limits can only be influenced via environment variables — there is no programmatic path.

    Spec: specification/logs/sdk.md — "LogRecord Limits" (the SDK must allow configuring attribute count / value-length limits on the LoggerProvider). Java reference: SdkLoggerProviderBuilder.setLogLimits(...) with the LogLimits type.

    Proposed fix

    Add a keyword-only limits: LogRecordLimits | None parameter to LoggerProvider.__init__, store it, pass it to each Logger, and thread it into _from_api_log_record so it is applied when constructing log records. Default (no argument) behavior remains unchanged (falls back to env vars / defaults).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions