Skip to content

Commit 12bdc9b

Browse files
authored
Merge branch 'main' into add_attributes_itr
2 parents 6013bec + bf7b4a0 commit 12bdc9b

File tree

8 files changed

+55
-8
lines changed

8 files changed

+55
-8
lines changed

examples/metrics-basic/src/main.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use opentelemetry_sdk::metrics::{PeriodicReader, SdkMeterProvider};
55
use opentelemetry_sdk::{runtime, Resource};
66
use std::error::Error;
77

8-
fn init_meter_provider() {
8+
fn init_meter_provider() -> opentelemetry_sdk::metrics::SdkMeterProvider {
99
let exporter = opentelemetry_stdout::MetricsExporterBuilder::default()
1010
// uncomment the below lines to pretty print output.
1111
// .with_encoder(|writer, data|
@@ -19,13 +19,14 @@ fn init_meter_provider() {
1919
"metrics-basic-example",
2020
)]))
2121
.build();
22-
global::set_meter_provider(provider);
22+
global::set_meter_provider(provider.clone());
23+
provider
2324
}
2425

2526
#[tokio::main]
2627
async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
2728
// Initialize the MeterProvider with the stdout Exporter.
28-
init_meter_provider();
29+
let meter_provider = init_meter_provider();
2930

3031
// Create a meter from the above MeterProvider.
3132
let meter = global::meter("mylibraryname");
@@ -137,6 +138,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
137138
// Metrics are exported by default every 30 seconds when using stdout exporter,
138139
// however shutting down the MeterProvider here instantly flushes
139140
// the metrics, instead of waiting for the 30 sec interval.
140-
global::shutdown_meter_provider();
141+
// global::shutdown_meter_provider();
142+
meter_provider.shutdown()?;
141143
Ok(())
142144
}

opentelemetry-sdk/CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@
2828
- After `shutdown`, `LogProcessor` will not process any new logs
2929
- Moving LogRecord implementation to the SDK. [1702](https://github.com/open-telemetry/opentelemetry-rust/pull/1702).
3030
- Relocated `LogRecord` struct to SDK, as an implementation for the trait in the API.
31+
- **Breaking** [#1729](https://github.com/open-telemetry/opentelemetry-rust/pull/1729)
32+
- Update the return type of `TracerProvider.span_processors()` from `&Vec<Box<dyn SpanProcessor>>` to `&[Box<dyn SpanProcessor>]`.
33+
- Update the return type of `LoggerProvider.log_processors()` from `&Vec<Box<dyn LogProcessor>>` to `&[Box<dyn LogProcessor>]`.
3134

3235
## v0.22.1
3336

opentelemetry-sdk/src/logs/log_emitter.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ impl LoggerProvider {
9292
}
9393

9494
/// Log processors associated with this provider.
95-
pub fn log_processors(&self) -> &Vec<Box<dyn LogProcessor>> {
95+
pub fn log_processors(&self) -> &[Box<dyn LogProcessor>] {
9696
&self.inner.processors
9797
}
9898

opentelemetry-sdk/src/trace/provider.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ impl TracerProvider {
6262
}
6363

6464
/// Span processors associated with this provider
65-
pub fn span_processors(&self) -> &Vec<Box<dyn SpanProcessor>> {
65+
pub fn span_processors(&self) -> &[Box<dyn SpanProcessor>] {
6666
&self.inner.processors
6767
}
6868

opentelemetry-sdk/src/trace/span.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ impl Span {
219219
data.end_time = opentelemetry::time::now();
220220
}
221221

222-
match provider.span_processors().as_slice() {
222+
match provider.span_processors() {
223223
[] => {}
224224
[processor] => {
225225
processor.on_end(build_export_data(

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

+4-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ rust-version = "1.65"
1919
default = ["trace", "metrics", "logs"]
2020
trace = ["opentelemetry/trace", "opentelemetry_sdk/trace", "futures-util"]
2121
metrics = ["async-trait", "opentelemetry/metrics", "opentelemetry_sdk/metrics"]
22-
logs = ["opentelemetry/logs", "opentelemetry_sdk/logs", "async-trait", "thiserror"]
22+
logs = ["opentelemetry/logs", "opentelemetry_sdk/logs", "async-trait", "thiserror", "opentelemetry_sdk/logs_level_enabled"]
2323

2424
[dependencies]
2525
async-trait = { workspace = true, optional = true }
@@ -35,4 +35,7 @@ ordered-float = { workspace = true }
3535
[dev-dependencies]
3636
opentelemetry = { path = "../opentelemetry", features = ["metrics"] }
3737
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"] }
3841
tokio = { workspace = true, features = ["full"] }

opentelemetry-stdout/examples/basic.rs

+38
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,21 @@ fn init_metrics() {
3131
global::set_meter_provider(provider);
3232
}
3333

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+
}
48+
3449
#[cfg(feature = "trace")]
3550
fn emit_span() {
3651
let tracer = global::tracer("stdout-test");
@@ -50,6 +65,12 @@ fn emit_metrics() {
5065
c.add(1, &[KeyValue::new("test_key", "test_value")]);
5166
}
5267

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+
}
73+
5374
#[tokio::main]
5475
async fn main() -> Result<(), Box<dyn std::error::Error>> {
5576
#[cfg(feature = "trace")]
@@ -58,9 +79,23 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
5879
#[cfg(feature = "metrics")]
5980
init_metrics();
6081

82+
#[cfg(feature = "logs")]
83+
let logger_provider = init_logs();
84+
85+
#[cfg(feature = "logs")]
86+
emit_log();
87+
88+
println!(
89+
"======================================================================================"
90+
);
91+
6192
#[cfg(feature = "trace")]
6293
emit_span();
6394

95+
println!(
96+
"======================================================================================"
97+
);
98+
6499
#[cfg(feature = "metrics")]
65100
emit_metrics();
66101

@@ -70,5 +105,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
70105
#[cfg(feature = "metrics")]
71106
global::shutdown_meter_provider();
72107

108+
#[cfg(feature = "logs")]
109+
drop(logger_provider);
110+
73111
Ok(())
74112
}

0 commit comments

Comments
 (0)