77
88if typing .TYPE_CHECKING :
99 from opentelemetry .instrumentation .instrumentor import BaseInstrumentor # type: ignore[attr-defined]
10- from opentelemetry .sdk .trace .export import SpanExporter
11-
1210
1311if import_checker .is_opentelemetry_installed :
1412 from opentelemetry .exporter .otlp .proto .grpc .trace_exporter import OTLPSpanExporter
1513 from opentelemetry .sdk import resources
1614 from opentelemetry .sdk .trace import TracerProvider
17- from opentelemetry .sdk .trace .export import BatchSpanProcessor
15+ from opentelemetry .sdk .trace .export import BatchSpanProcessor , ConsoleSpanExporter , SimpleSpanProcessor
1816 from opentelemetry .trace import set_tracer_provider
1917
2018
@@ -34,17 +32,20 @@ class OpentelemetryConfig(BaseConfig):
3432 opentelemetry_instrumentors : list [typing .Union [InstrumentorWithParams , "BaseInstrumentor" ]] = dataclasses .field (
3533 default_factory = list
3634 )
37- opentelemetry_span_exporter : typing . Optional [ "SpanExporter" ] = None
35+ opentelemetry_log_traces : bool = False
3836
3937
4038@dataclasses .dataclass (kw_only = True , slots = True , frozen = True )
4139class OpenTelemetryInstrument (BaseInstrument ):
4240 bootstrap_config : OpentelemetryConfig
43- not_ready_message = "opentelemetry_endpoint is empty"
41+ not_ready_message = "opentelemetry_endpoint is empty and opentelemetry_log_traces is False "
4442 missing_dependency_message = "opentelemetry is not installed"
4543
4644 def is_ready (self ) -> bool :
47- return bool (self .bootstrap_config .opentelemetry_endpoint ) and import_checker .is_opentelemetry_installed
45+ return (
46+ bool (self .bootstrap_config .opentelemetry_endpoint or self .bootstrap_config .opentelemetry_log_traces )
47+ and import_checker .is_opentelemetry_installed
48+ )
4849
4950 @staticmethod
5051 def check_dependencies () -> bool :
@@ -63,15 +64,17 @@ def bootstrap(self) -> None:
6364 attributes = {k : v for k , v in attributes .items () if v },
6465 )
6566 tracer_provider = TracerProvider (resource = resource )
66- tracer_provider .add_span_processor (
67- BatchSpanProcessor (
68- self .bootstrap_config .opentelemetry_span_exporter
69- or OTLPSpanExporter (
70- endpoint = self .bootstrap_config .opentelemetry_endpoint ,
71- insecure = self .bootstrap_config .opentelemetry_insecure ,
67+ if self .bootstrap_config .opentelemetry_log_traces :
68+ tracer_provider .add_span_processor (SimpleSpanProcessor (ConsoleSpanExporter ()))
69+ if self .bootstrap_config .opentelemetry_endpoint :
70+ tracer_provider .add_span_processor (
71+ BatchSpanProcessor (
72+ OTLPSpanExporter (
73+ endpoint = self .bootstrap_config .opentelemetry_endpoint ,
74+ insecure = self .bootstrap_config .opentelemetry_insecure ,
75+ ),
7276 ),
73- ),
74- )
77+ )
7578 for one_instrumentor in self .bootstrap_config .opentelemetry_instrumentors :
7679 if isinstance (one_instrumentor , InstrumentorWithParams ):
7780 one_instrumentor .instrumentor .instrument (
0 commit comments