@@ -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
0 commit comments