MCPcopy Create free account
hub / github.com/AI45Lab/Code / init

Method init

core/src/telemetry_otel.rs:70–127  ·  view source on GitHub ↗

Initialize OpenTelemetry and return a guard that shuts down on drop.

(self)

Source from the content-addressed store, hash-verified

68
69 /// Initialize OpenTelemetry and return a guard that shuts down on drop.
70 pub fn init(self) -> Result<TelemetryGuard> {
71 let resource = opentelemetry_sdk::Resource::new(vec![opentelemetry::KeyValue::new(
72 "service.name",
73 self.service_name.clone(),
74 )]);
75
76 // Set up OTLP trace exporter
77 let tracer_provider = if self.traces {
78 let exporter = opentelemetry_otlp::SpanExporter::builder()
79 .with_tonic()
80 .with_endpoint(&self.endpoint)
81 .build()
82 .context("Failed to create OTLP span exporter")?;
83
84 let provider = opentelemetry_sdk::trace::TracerProvider::builder()
85 .with_resource(resource)
86 .with_batch_exporter(exporter, opentelemetry_sdk::runtime::Tokio)
87 .build();
88
89 opentelemetry::global::set_tracer_provider(provider.clone());
90 Some(provider)
91 } else {
92 None
93 };
94
95 // Build tracing subscriber with OTel layer
96 let env_filter = tracing_subscriber::EnvFilter::try_from_default_env()
97 .unwrap_or_else(|_| tracing_subscriber::EnvFilter::new(&self.log_filter));
98
99 let fmt_layer = tracing_subscriber::fmt::layer().with_target(true);
100
101 if let Some(ref provider) = tracer_provider {
102 let tracer = provider.tracer(self.service_name.clone());
103 let otel_layer = tracing_opentelemetry::layer().with_tracer(tracer);
104
105 tracing_subscriber::registry()
106 .with(env_filter)
107 .with(fmt_layer)
108 .with(otel_layer)
109 .try_init()
110 .context("Failed to initialize tracing subscriber with OTel")?;
111 } else {
112 tracing_subscriber::registry()
113 .with(env_filter)
114 .with(fmt_layer)
115 .try_init()
116 .context("Failed to initialize tracing subscriber")?;
117 }
118
119 tracing::info!(
120 service = %self.service_name,
121 endpoint = %self.endpoint,
122 traces = self.traces,
123 "OpenTelemetry initialized"
124 );
125
126 Ok(TelemetryGuard { tracer_provider })
127 }

Callers

nothing calls this directly

Calls 4

registryFunction · 0.85
contextMethod · 0.80
buildMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected