Skip to content

Commit 7ea39e3

Browse files
committed
Fixes
1 parent 40d939f commit 7ea39e3

File tree

2 files changed

+48
-21
lines changed

2 files changed

+48
-21
lines changed

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

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,8 @@ def _init_tracing(
214214
sampler: Sampler | None = None,
215215
resource: Resource | None = None,
216216
exporter_args_map: ExporterArgsMap | None = None,
217-
processor: Type[SpanProcessor] | None = None,
217+
span_processors: Sequence[Type[SpanProcessor]] | None = None,
218+
export_processor: Type[SpanProcessor] | None = None,
218219
):
219220
provider = TracerProvider(
220221
id_generator=id_generator,
@@ -224,11 +225,16 @@ def _init_tracing(
224225
set_tracer_provider(provider)
225226

226227
exporter_args_map = exporter_args_map or {}
227-
span_processor = processor or BatchSpanProcessor
228+
span_processors = span_processors or []
229+
export_processor = export_processor or BatchSpanProcessor
228230
for _, exporter_class in exporters.items():
229231
exporter_args = exporter_args_map.get(exporter_class, {})
232+
233+
for span_processor in span_processors:
234+
provider.add_span_processor(span_processor)
235+
230236
provider.add_span_processor(
231-
span_processor(exporter_class(**exporter_args))
237+
export_processor(exporter_class(**exporter_args))
232238
)
233239

234240

@@ -262,17 +268,24 @@ def _init_logging(
262268
resource: Resource | None = None,
263269
setup_logging_handler: bool = True,
264270
exporter_args_map: ExporterArgsMap | None = None,
265-
processor: Type[LogRecordProcessor] | None = None,
271+
log_record_processors: Sequence[Type[LogRecordProcessor]] | None = None,
272+
export_processor: Type[LogRecordProcessor] | None = None,
266273
):
267274
provider = LoggerProvider(resource=resource)
268275
set_logger_provider(provider)
269276

270277
exporter_args_map = exporter_args_map or {}
271-
log_record_processor = processor or BatchLogRecordProcessor
278+
279+
log_record_processors = log_record_processors or []
280+
export_processor = export_processor or BatchLogRecordProcessor
272281
for _, exporter_class in exporters.items():
273282
exporter_args = exporter_args_map.get(exporter_class, {})
283+
284+
for log_record_processor in log_record_processors:
285+
provider.add_log_record_processor(log_record_processor)
286+
274287
provider.add_log_record_processor(
275-
log_record_processor(exporter_class(**exporter_args))
288+
export_processor(exporter_class(**exporter_args))
276289
)
277290

278291
# silence warnings from internal users until we drop the deprecated Events API
@@ -437,8 +450,10 @@ def _initialize_components(
437450
id_generator: IdGenerator | None = None,
438451
setup_logging_handler: bool | None = None,
439452
exporter_args_map: ExporterArgsMap | None = None,
440-
span_processor: Type[SpanProcessor] | None = None,
441-
log_record_processor: Type[LogRecordProcessor] | None = None,
453+
span_processors: Sequence[Type[SpanProcessor]] | None = None,
454+
trace_export_processor: Type[SpanProcessor] | None = None,
455+
log_record_processors: Sequence[Type[LogRecordProcessor]] | None = None,
456+
log_export_processor: Type[LogRecordProcessor] | None = None,
442457
):
443458
# pylint: disable=too-many-locals
444459
if trace_exporter_names is None:
@@ -475,7 +490,8 @@ def _initialize_components(
475490
sampler=sampler,
476491
resource=resource,
477492
exporter_args_map=exporter_args_map,
478-
processor=span_processor,
493+
span_processors=span_processors,
494+
export_processor=trace_export_processor,
479495
)
480496
_init_metrics(
481497
metric_exporters, resource, exporter_args_map=exporter_args_map
@@ -494,7 +510,8 @@ def _initialize_components(
494510
resource,
495511
setup_logging_handler,
496512
exporter_args_map=exporter_args_map,
497-
processor=log_record_processor,
513+
log_record_processors=log_record_processors,
514+
export_processor=log_export_processor,
498515
)
499516

500517

opentelemetry-sdk/tests/test_configurator.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
from opentelemetry.sdk._logs import LoggingHandler
4949
from opentelemetry.sdk._logs._internal.export import LogRecordExporter
5050
from opentelemetry.sdk._logs.export import (
51-
ConsoleLogRecordExporter
51+
ConsoleLogRecordExporter,
5252
SimpleLogRecordProcessor,
5353
)
5454
from opentelemetry.sdk.environment_variables import (
@@ -402,11 +402,11 @@ def test_trace_init_exporter_uses_exporter_args_map(self):
402402
exporter = provider.processor.exporter
403403
self.assertEqual(exporter.compression, "gzip")
404404

405-
def test_trace_init_custom_span_processor(self):
405+
def test_trace_init_custom_export_span_processor(self):
406406
_init_tracing(
407407
{"otlp": OTLPSpanExporter},
408408
id_generator=RandomIdGenerator(),
409-
processor=SimpleSpanProcessor,
409+
export_processor=SimpleSpanProcessor,
410410
)
411411

412412
provider = self.set_provider_mock.call_args[0][0]
@@ -722,13 +722,13 @@ def test_logging_init_exporter_uses_exporter_args_map(self):
722722
provider = self.set_provider_mock.call_args[0][0]
723723
self.assertEqual(provider.processor.exporter.compression, "gzip")
724724

725-
def test_logging_init_custom_log_record_processor(self):
725+
def test_logging_init_custom_export_log_record_processor(self):
726726
with ResetGlobalLoggingState():
727727
resource = Resource.create({})
728728
_init_logging(
729729
{"otlp": DummyOTLPLogExporter},
730730
resource=resource,
731-
processor=SimpleLogRecordProcessor,
731+
export_processor=SimpleLogRecordProcessor,
732732
)
733733
provider = self.set_provider_mock.call_args[0][0]
734734
self.assertIsInstance(provider.processor, SimpleLogRecordProcessor)
@@ -769,7 +769,12 @@ def test_logging_init_disable_default(self, logging_mock, tracing_mock):
769769
_initialize_components(auto_instrumentation_version="auto-version")
770770
self.assertEqual(tracing_mock.call_count, 1)
771771
logging_mock.assert_called_once_with(
772-
mock.ANY, mock.ANY, False, exporter_args_map=None, processor=None
772+
mock.ANY,
773+
mock.ANY,
774+
False,
775+
exporter_args_map=None,
776+
log_record_processors=None,
777+
export_processor=None,
773778
)
774779

775780
@patch.dict(
@@ -789,7 +794,8 @@ def test_logging_init_enable_env(self, logging_mock, tracing_mock):
789794
mock.ANY,
790795
True,
791796
exporter_args_map=None,
792-
processor=None,
797+
log_record_processors=None,
798+
export_processor=None,
793799
)
794800
self.assertEqual(tracing_mock.call_count, 1)
795801

@@ -874,8 +880,10 @@ def test_initialize_components_kwargs(
874880
"id_generator": "TEST_GENERATOR",
875881
"setup_logging_handler": True,
876882
"exporter_args_map": {1: {"compression": "gzip"}},
877-
"log_record_processor": SimpleLogRecordProcessor,
878-
"span_processor": SimpleSpanProcessor,
883+
"log_export_processor": SimpleLogRecordProcessor,
884+
"trace_export_processor": SimpleSpanProcessor,
885+
"log_record_processors": [],
886+
"span_processors": [],
879887
}
880888
_initialize_components(**kwargs)
881889

@@ -910,7 +918,8 @@ def test_initialize_components_kwargs(
910918
sampler="TEST_SAMPLER",
911919
resource="TEST_RESOURCE",
912920
exporter_args_map={1: {"compression": "gzip"}},
913-
processor=SimpleSpanProcessor,
921+
span_processors=[],
922+
export_processor=SimpleSpanProcessor,
914923
)
915924
metrics_mock.assert_called_once_with(
916925
"TEST_METRICS_EXPORTERS_DICT",
@@ -922,7 +931,8 @@ def test_initialize_components_kwargs(
922931
"TEST_RESOURCE",
923932
True,
924933
exporter_args_map={1: {"compression": "gzip"}},
925-
processor=SimpleLogRecordProcessor,
934+
log_record_processors=[],
935+
export_processor=SimpleLogRecordProcessor,
926936
)
927937

928938
def test_basicConfig_works_with_otel_handler(self):

0 commit comments

Comments
 (0)