Skip to content

Commit 1cde7a3

Browse files
authored
Merge branch 'main' into utpilla/Use-slices-instead-references-to-vecs
2 parents 0b4e955 + 01d584a commit 1cde7a3

File tree

3 files changed

+91
-30
lines changed

3 files changed

+91
-30
lines changed

opentelemetry-stdout/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
- Fix StatusCode in stdout exporter [#1454](https://github.com/open-telemetry/opentelemetry-rust/pull/1454)
1010
- Add missing event timestamps [#1391](https://github.com/open-telemetry/opentelemetry-rust/pull/1391)
1111
- Adjusted `chrono` features to reduce number of transitive dependencies. [#1569](https://github.com/open-telemetry/opentelemetry-rust/pull/1569)
12+
- The default feature now includes logs, metrics and trace.
1213

1314
## v0.2.0
1415

opentelemetry-stdout/Cargo.toml

+5-1
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ 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"]
21-
logs = ["opentelemetry/logs", "opentelemetry_sdk/logs", "async-trait", "thiserror"]
22+
logs = ["opentelemetry/logs", "opentelemetry_sdk/logs", "async-trait", "thiserror", "opentelemetry_sdk/logs_level_enabled"]
2223

2324
[dependencies]
2425
async-trait = { workspace = true, optional = true }
@@ -34,4 +35,7 @@ ordered-float = { workspace = true }
3435
[dev-dependencies]
3536
opentelemetry = { path = "../opentelemetry", features = ["metrics"] }
3637
opentelemetry_sdk = { path = "../opentelemetry-sdk", features = ["rt-tokio", "metrics"] }
38+
opentelemetry-appender-tracing = { version = "0.3.0", path = "../opentelemetry-appender-tracing"}
39+
tracing = { workspace = true, features = ["std"]}
40+
tracing-subscriber = { workspace = true, features = ["registry", "std"] }
3741
tokio = { workspace = true, features = ["full"] }

opentelemetry-stdout/examples/basic.rs

+85-29
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,112 @@
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();
34+
#[cfg(feature = "logs")]
35+
fn init_logs() -> opentelemetry_sdk::logs::LoggerProvider {
36+
use opentelemetry_appender_tracing::layer;
37+
use opentelemetry_sdk::logs::LoggerProvider;
38+
use tracing_subscriber::prelude::*;
39+
40+
let exporter = opentelemetry_stdout::LogExporter::default();
41+
let provider: LoggerProvider = LoggerProvider::builder()
42+
.with_simple_exporter(exporter)
43+
.build();
44+
let layer = layer::OpenTelemetryTracingBridge::new(&provider);
45+
tracing_subscriber::registry().with(layer).init();
46+
provider
47+
}
3748

38-
let tracer = tracer_provider.tracer("stdout-test");
49+
#[cfg(feature = "trace")]
50+
fn emit_span() {
51+
let tracer = global::tracer("stdout-test");
3952
let mut span = tracer.start("test_span");
4053
span.set_attribute(KeyValue::new("test_key", "test_value"));
4154
span.add_event(
4255
"test_event",
4356
vec![KeyValue::new("test_event_key", "test_event_value")],
4457
);
4558
span.end();
59+
}
4660

61+
#[cfg(feature = "metrics")]
62+
fn emit_metrics() {
4763
let meter = global::meter("stdout-test");
48-
let c = meter.u64_counter("test_events").init();
64+
let c = meter.u64_counter("test_counter").init();
4965
c.add(1, &[KeyValue::new("test_key", "test_value")]);
66+
}
67+
68+
#[cfg(feature = "logs")]
69+
fn emit_log() {
70+
use tracing::error;
71+
error!(name: "my-event-name", target: "my-system", event_id = 20, user_name = "otel", user_email = "otel@opentelemetry.io");
72+
}
5073

74+
#[tokio::main]
75+
async fn main() -> Result<(), Box<dyn std::error::Error>> {
76+
#[cfg(feature = "trace")]
77+
init_trace();
78+
79+
#[cfg(feature = "metrics")]
80+
init_metrics();
81+
82+
#[cfg(feature = "logs")]
83+
let logger_provider = init_logs();
84+
85+
#[cfg(feature = "logs")]
86+
emit_log();
87+
88+
println!(
89+
"======================================================================================"
90+
);
91+
92+
#[cfg(feature = "trace")]
93+
emit_span();
94+
95+
println!(
96+
"======================================================================================"
97+
);
98+
99+
#[cfg(feature = "metrics")]
100+
emit_metrics();
101+
102+
#[cfg(feature = "trace")]
103+
global::shutdown_tracer_provider();
104+
105+
#[cfg(feature = "metrics")]
51106
global::shutdown_meter_provider();
52107

108+
#[cfg(feature = "logs")]
109+
drop(logger_provider);
110+
53111
Ok(())
54112
}
55-
#[cfg(not(all(feature = "metrics", feature = "trace")))]
56-
fn main() {}

0 commit comments

Comments
 (0)