Skip to content

Commit e1fb0ba

Browse files
committed
update SDK configuration to utilize logger configurator
1 parent 3d0a47c commit e1fb0ba

2 files changed

Lines changed: 42 additions & 5 deletions

File tree

opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
LoggingHandler,
4343
LogRecordProcessor,
4444
)
45+
from opentelemetry.sdk._logs._internal import LoggerConfiguratorT
4546
from opentelemetry.sdk._logs.export import (
4647
BatchLogRecordProcessor,
4748
LogRecordExporter,
@@ -52,6 +53,7 @@
5253
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL,
5354
OTEL_EXPORTER_OTLP_PROTOCOL,
5455
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL,
56+
OTEL_PYTHON_LOGGER_CONFIGURATOR,
5557
OTEL_PYTHON_TRACER_CONFIGURATOR,
5658
OTEL_TRACES_SAMPLER,
5759
OTEL_TRACES_SAMPLER_ARG,
@@ -171,6 +173,10 @@ def _get_tracer_configurator() -> str | None:
171173
return environ.get(OTEL_PYTHON_TRACER_CONFIGURATOR, None)
172174

173175

176+
def _get_logger_configurator() -> str | None:
177+
return environ.get(OTEL_PYTHON_LOGGER_CONFIGURATOR, None)
178+
179+
174180
def _get_exporter_entry_point(
175181
exporter_name: str, signal_type: Literal["traces", "metrics", "logs"]
176182
):
@@ -294,8 +300,11 @@ def _init_logging(
294300
log_record_processors: Sequence[LogRecordProcessor] | None = None,
295301
export_log_record_processor: _ConfigurationExporterLogRecordProcessorT
296302
| None = None,
303+
logger_configurator: LoggerConfiguratorT | None = None,
297304
):
298-
provider = LoggerProvider(resource=resource)
305+
provider = LoggerProvider(
306+
resource=resource, logger_configurator=logger_configurator
307+
)
299308
set_logger_provider(provider)
300309

301310
exporter_args_map = exporter_args_map or {}
@@ -366,6 +375,27 @@ def overwritten_config_fn(*args, **kwargs):
366375
logging.basicConfig = wrapper(logging.basicConfig)
367376

368377

378+
def _import_logger_configurator(
379+
logger_configurator_name: str | None,
380+
) -> LoggerConfiguratorT | None:
381+
if not logger_configurator_name:
382+
return None
383+
384+
try:
385+
_, logger_configurator_impl = _import_config_components(
386+
[logger_configurator_name.strip()],
387+
"_opentelemetry_logger_configurator",
388+
)[0]
389+
except Exception as exc: # pylint: disable=broad-exception-caught
390+
_logger.warning(
391+
"Using default logger configurator. Failed to load logger configurator, %s: %s",
392+
logger_configurator_name,
393+
exc,
394+
)
395+
return None
396+
return logger_configurator_impl
397+
398+
369399
def _import_tracer_configurator(
370400
tracer_configurator_name: str | None,
371401
) -> _TracerConfiguratorT | None:
@@ -507,6 +537,7 @@ def _initialize_components(
507537
export_log_record_processor: _ConfigurationExporterLogRecordProcessorT
508538
| None = None,
509539
tracer_configurator: _TracerConfiguratorT | None = None,
540+
logger_configurator: LoggerConfiguratorT | None = None,
510541
):
511542
# pylint: disable=too-many-locals
512543
if trace_exporter_names is None:
@@ -538,6 +569,11 @@ def _initialize_components(
538569
tracer_configurator = _import_tracer_configurator(
539570
tracer_configurator_name
540571
)
572+
if logger_configurator is None:
573+
logger_configurator_name = _get_logger_configurator()
574+
logger_configurator = _import_logger_configurator(
575+
logger_configurator_name
576+
)
541577

542578
# if env var OTEL_RESOURCE_ATTRIBUTES is given, it will read the service_name
543579
# from the env variable else defaults to "unknown_service"
@@ -572,6 +608,7 @@ def _initialize_components(
572608
exporter_args_map=exporter_args_map,
573609
log_record_processors=log_record_processors,
574610
export_log_record_processor=export_log_record_processor,
611+
logger_configurator=logger_configurator,
575612
)
576613

577614

opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -772,10 +772,10 @@ def __init__(
772772
self._rules = rules
773773
self._default_config = default_config
774774

775-
def __call__(self, meter_scope: InstrumentationScope) -> LoggerConfig:
776-
for predicate, meter_config in self._rules:
777-
if predicate(meter_scope):
778-
return meter_config
775+
def __call__(self, logger_scope: InstrumentationScope) -> LoggerConfig:
776+
for predicate, logger_config in self._rules:
777+
if predicate(logger_scope):
778+
return logger_config
779779
# by default return default config
780780
return self._default_config
781781

0 commit comments

Comments
 (0)