Currently _tracer_provider.py, _meter_provider.py, and _logger_provider.py each have a hardcoded list of supported exporters (otlp_http, otlp_grpc, console). Any exporter from a contrib package or private library cannot be used via declarative config.
The OTel declarative config spec defines a PluginComponentProvider mechanism where unknown exporter names should be resolved dynamically rather than erroring. For Python, the idiomatic approach is entry points — consistent with how the container resource detector is already loaded (#5004).
This issue tracks implementing generic exporter loading for all three signal types:
- Span exporters (
_tracer_provider.py)
- Metric exporters (
_meter_provider.py)
- Log exporters (
_logger_provider.py)
Related: #5053 (generic resource detector loading)
Currently
_tracer_provider.py,_meter_provider.py, and_logger_provider.pyeach have a hardcoded list of supported exporters (otlp_http,otlp_grpc,console). Any exporter from a contrib package or private library cannot be used via declarative config.The OTel declarative config spec defines a
PluginComponentProvidermechanism where unknown exporter names should be resolved dynamically rather than erroring. For Python, the idiomatic approach is entry points — consistent with how the container resource detector is already loaded (#5004).This issue tracks implementing generic exporter loading for all three signal types:
_tracer_provider.py)_meter_provider.py)_logger_provider.py)Related: #5053 (generic resource detector loading)