Skip to content

feat(config): wire top-level attribute_limits into per-signal providers#5365

Open
ocelotl wants to merge 1 commit into
open-telemetry:mainfrom
ocelotl:diego/config-attribute-limits
Open

feat(config): wire top-level attribute_limits into per-signal providers#5365
ocelotl wants to merge 1 commit into
open-telemetry:mainfrom
ocelotl:diego/config-attribute-limits

Conversation

@ocelotl

@ocelotl ocelotl commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Closes #5357

Summary

  • Reads config.attribute_limits in configure_sdk() and passes it as a global fallback to create_tracer_provider() and create_logger_provider()
  • Per-signal limits (tracer_provider.limits / logger_provider.limits) always take precedence; absent fields fall back to the global value, then to OTel spec defaults
  • Adds log_record_limits parameter to LoggerProvider, threads it through Logger down to each ReadWriteLogRecord — mirroring how SpanLimits flows through TracerProvider

Test plan

  • tests/_configuration/test_sdk.py — global limits passed to per-signal factories
  • tests/_configuration/test_tracer_provider.py — per-signal override, global fallback, spec defaults
  • tests/_configuration/test_logger_provider.py — same coverage for logs; verifies limits are applied (not just warned about)
  • tests/logs/ — no regressions in existing log SDK tests

ocelotl added a commit to ocelotl/opentelemetry-python that referenced this pull request Jun 26, 2026
@ocelotl
ocelotl marked this pull request as ready for review June 26, 2026 21:28
@ocelotl
ocelotl requested a review from a team as a code owner June 26, 2026 21:28
Comment thread opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py
Comment thread opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends the OpenTelemetry SDK declarative configuration path to support top-level attribute_limits as a global fallback for traces and logs, and adds programmatic log_record_limits support to LoggerProvider so log attribute limits can be configured consistently with SpanLimits.

Changes:

  • Thread config.attribute_limits through configure_sdk() into create_tracer_provider() / create_logger_provider() as a fallback when per-signal limits are absent.
  • Implement log-record limits creation in declarative config and pass the resulting log_record_limits into LoggerProvider, propagating to Logger and ReadWriteLogRecord.
  • Update/expand configuration tests and add a changelog entry.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
opentelemetry-sdk/src/opentelemetry/sdk/_configuration/_sdk.py Plumbs top-level attribute_limits into per-signal configurators.
opentelemetry-sdk/src/opentelemetry/sdk/_configuration/_tracer_provider.py Adds global fallback handling for span attribute limits in declarative config.
opentelemetry-sdk/src/opentelemetry/sdk/_configuration/_logger_provider.py Adds log-record limits handling and wires limits into LoggerProvider construction.
opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/init.py Threads log_record_limits from provider → logger → emitted log records.
opentelemetry-sdk/tests/_configuration/test_sdk.py Updates expectations for updated configurator call signatures.
opentelemetry-sdk/tests/_configuration/test_tracer_provider.py Adds tests covering global fallback semantics for traces.
opentelemetry-sdk/tests/_configuration/test_logger_provider.py Updates tests to validate log-record limits are applied (not just warned/ignored).
opentelemetry-sdk/src/opentelemetry/sdk/trace/export/init.py Minor formatting-only change to console exporter default formatter.
.changelog/5365.added Documents the new config wiring and LoggerProvider limits support.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread opentelemetry-sdk/src/opentelemetry/sdk/_configuration/_tracer_provider.py Outdated
Comment thread opentelemetry-sdk/tests/_configuration/test_tracer_provider.py
Comment thread opentelemetry-sdk/tests/_configuration/test_logger_provider.py
@xrmx

xrmx commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

This needs a rebase after declarative config move

@xrmx xrmx moved this to Approved PRs that need fixes in Python PR digest Jul 13, 2026
Parses config.attribute_limits in configure_sdk() and passes it as a
global fallback to create_tracer_provider() and create_logger_provider().
Per-signal limits (tracer_provider.limits / logger_provider.limits)
always take precedence; absent fields fall back to the global value, then
to OTel spec defaults.

For logs, adds log_record_limits to the LoggerProvider constructor,
threads it through Logger, and applies it when constructing each
ReadWriteLogRecord — mirroring how SpanLimits flows through TracerProvider.
@ocelotl
ocelotl force-pushed the diego/config-attribute-limits branch from 83390eb to 9f37481 Compare July 15, 2026 23:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Approved PRs that need fixes

Development

Successfully merging this pull request may close these issues.

Logging stability review: [minor] LogRecord attribute limits not configurable via LoggerProvider

4 participants