Skip to content

Commit 36fbc57

Browse files
authored
Merge branch 'main' into re-export-tonic
2 parents 509e48c + b5d31f1 commit 36fbc57

File tree

1 file changed

+49
-6
lines changed

1 file changed

+49
-6
lines changed

opentelemetry-otlp/src/lib.rs

+49-6
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,13 @@
3939
//! .build()?;
4040
//!
4141
//! // Create a tracer provider with the exporter
42-
//! let _ = opentelemetry_sdk::trace::SdkTracerProvider::builder()
42+
//! let tracer_provider = opentelemetry_sdk::trace::SdkTracerProvider::builder()
4343
//! .with_simple_exporter(otlp_exporter)
4444
//! .build();
4545
//!
46+
//! // Set it as the global provider
47+
//! global::set_tracer_provider(tracer_provider);
48+
//!
4649
//! // Get a tracer and create spans
4750
//! let tracer = global::tracer("my_tracer");
4851
//! tracer.in_span("doing_work", |_cx| {
@@ -62,31 +65,71 @@
6265
//! $ docker run -p 4317:4317 otel/opentelemetry-collector:latest
6366
//! ```
6467
//!
65-
//! Configure your application to export traces via gRPC:
68+
//! Configure your application to export traces via gRPC (the tonic client requires a Tokio runtime):
69+
//!
70+
//! - With `[tokio::main]`
6671
//!
6772
//! ```no_run
6873
//! # #[cfg(all(feature = "trace", feature = "grpc-tonic"))]
6974
//! # {
70-
//! use opentelemetry::global;
71-
//! use opentelemetry::trace::Tracer;
75+
//! use opentelemetry::{global, trace::Tracer};
7276
//!
73-
//! fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
77+
//! #[tokio::main]
78+
//! async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
7479
//! // Initialize OTLP exporter using gRPC (Tonic)
7580
//! let otlp_exporter = opentelemetry_otlp::SpanExporter::builder()
7681
//! .with_tonic()
7782
//! .build()?;
7883
//!
7984
//! // Create a tracer provider with the exporter
80-
//! let _ = opentelemetry_sdk::trace::SdkTracerProvider::builder()
85+
//! let tracer_provider = opentelemetry_sdk::trace::SdkTracerProvider::builder()
8186
//! .with_simple_exporter(otlp_exporter)
8287
//! .build();
8388
//!
89+
//! // Set it as the global provider
90+
//! global::set_tracer_provider(tracer_provider);
91+
//!
92+
//! // Get a tracer and create spans
93+
//! let tracer = global::tracer("my_tracer");
94+
//! tracer.in_span("doing_work", |_cx| {
95+
//! // Your application logic here...
96+
//! });
97+
//!
98+
//! Ok(())
99+
//! # }
100+
//! }
101+
//! ```
102+
//!
103+
//! - Without `[tokio::main]`
104+
//!
105+
//! ```no_run
106+
//! # #[cfg(all(feature = "trace", feature = "grpc-tonic"))]
107+
//! # {
108+
//! use opentelemetry::{global, trace::Tracer};
109+
//!
110+
//! fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
111+
//! // Initialize OTLP exporter using gRPC (Tonic)
112+
//! let rt = tokio::runtime::Runtime::new()?;
113+
//! let tracer_provider = rt.block_on(async {
114+
//! let exporter = opentelemetry_otlp::SpanExporter::builder()
115+
//! .with_tonic()
116+
//! .build()
117+
//! .expect("Failed to create span exporter");
118+
//! opentelemetry_sdk::trace::SdkTracerProvider::builder()
119+
//! .with_simple_exporter(exporter)
120+
//! .build()
121+
//! });
122+
//!
123+
//! // Set it as the global provider
124+
//! global::set_tracer_provider(tracer_provider);
125+
//!
84126
//! // Get a tracer and create spans
85127
//! let tracer = global::tracer("my_tracer");
86128
//! tracer.in_span("doing_work", |_cx| {
87129
//! // Your application logic here...
88130
//! });
89131
//!
132+
//! // Ensure the runtime (`rt`) remains active until the program ends
90133
//! Ok(())
91134
//! # }
92135
//! }

0 commit comments

Comments
 (0)