Skip to content

Commit 5e02f38

Browse files
authored
Stdout example to default to all features (#1734)
1 parent 6d50e5f commit 5e02f38

File tree

2 files changed

+49
-30
lines changed

2 files changed

+49
-30
lines changed

opentelemetry-stdout/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ edition = "2021"
1616
rust-version = "1.65"
1717

1818
[features]
19+
default = ["trace", "metrics", "logs"]
1920
trace = ["opentelemetry/trace", "opentelemetry_sdk/trace", "futures-util"]
2021
metrics = ["async-trait", "opentelemetry/metrics", "opentelemetry_sdk/metrics"]
2122
logs = ["opentelemetry/logs", "opentelemetry_sdk/logs", "async-trait", "thiserror"]

opentelemetry-stdout/examples/basic.rs

+48-30
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,74 @@
1-
//! run with `$ cargo run --example basic --all-features
2-
3-
#[cfg(all(feature = "metrics", feature = "trace"))]
4-
use opentelemetry::{
5-
global,
6-
trace::{Span, Tracer, TracerProvider as _},
7-
KeyValue,
8-
};
9-
#[cfg(all(feature = "metrics", feature = "trace"))]
10-
use opentelemetry_sdk::{
11-
metrics::{PeriodicReader, SdkMeterProvider},
12-
runtime,
13-
trace::TracerProvider,
14-
};
15-
16-
#[cfg(all(feature = "metrics", feature = "trace"))]
17-
fn init_trace() -> TracerProvider {
1+
//! run with `$ cargo run --example basic
2+
3+
use opentelemetry::{global, KeyValue};
4+
5+
#[cfg(feature = "trace")]
6+
use opentelemetry::trace::{Span, Tracer};
7+
8+
#[cfg(feature = "metrics")]
9+
use opentelemetry_sdk::runtime;
10+
11+
#[cfg(feature = "metrics")]
12+
use opentelemetry_sdk::metrics::{PeriodicReader, SdkMeterProvider};
13+
14+
#[cfg(feature = "trace")]
15+
use opentelemetry_sdk::trace::TracerProvider;
16+
17+
#[cfg(feature = "trace")]
18+
fn init_trace() {
1819
let exporter = opentelemetry_stdout::SpanExporter::default();
19-
TracerProvider::builder()
20+
let provider = TracerProvider::builder()
2021
.with_simple_exporter(exporter)
21-
.build()
22+
.build();
23+
global::set_tracer_provider(provider);
2224
}
2325

24-
#[cfg(all(feature = "metrics", feature = "trace"))]
26+
#[cfg(feature = "metrics")]
2527
fn init_metrics() {
2628
let exporter = opentelemetry_stdout::MetricsExporter::default();
2729
let reader = PeriodicReader::builder(exporter, runtime::Tokio).build();
2830
let provider = SdkMeterProvider::builder().with_reader(reader).build();
2931
global::set_meter_provider(provider);
3032
}
3133

32-
#[tokio::main]
33-
#[cfg(all(feature = "metrics", feature = "trace"))]
34-
async fn main() -> Result<(), Box<dyn std::error::Error>> {
35-
let tracer_provider = init_trace();
36-
init_metrics();
37-
38-
let tracer = tracer_provider.tracer("stdout-test");
34+
#[cfg(feature = "trace")]
35+
fn emit_span() {
36+
let tracer = global::tracer("stdout-test");
3937
let mut span = tracer.start("test_span");
4038
span.set_attribute(KeyValue::new("test_key", "test_value"));
4139
span.add_event(
4240
"test_event",
4341
vec![KeyValue::new("test_event_key", "test_event_value")],
4442
);
4543
span.end();
44+
}
4645

46+
#[cfg(feature = "metrics")]
47+
fn emit_metrics() {
4748
let meter = global::meter("stdout-test");
48-
let c = meter.u64_counter("test_events").init();
49+
let c = meter.u64_counter("test_counter").init();
4950
c.add(1, &[KeyValue::new("test_key", "test_value")]);
51+
}
52+
53+
#[tokio::main]
54+
async fn main() -> Result<(), Box<dyn std::error::Error>> {
55+
#[cfg(feature = "trace")]
56+
init_trace();
57+
58+
#[cfg(feature = "metrics")]
59+
init_metrics();
60+
61+
#[cfg(feature = "trace")]
62+
emit_span();
63+
64+
#[cfg(feature = "metrics")]
65+
emit_metrics();
66+
67+
#[cfg(feature = "trace")]
68+
global::shutdown_tracer_provider();
5069

70+
#[cfg(feature = "metrics")]
5171
global::shutdown_meter_provider();
5272

5373
Ok(())
5474
}
55-
#[cfg(not(all(feature = "metrics", feature = "trace")))]
56-
fn main() {}

0 commit comments

Comments
 (0)