diff --git a/opentelemetry-stdout/CHANGELOG.md b/opentelemetry-stdout/CHANGELOG.md index 1408a9640c..9cd07d4199 100644 --- a/opentelemetry-stdout/CHANGELOG.md +++ b/opentelemetry-stdout/CHANGELOG.md @@ -9,6 +9,7 @@ - Fix StatusCode in stdout exporter [#1454](https://github.com/open-telemetry/opentelemetry-rust/pull/1454) - Add missing event timestamps [#1391](https://github.com/open-telemetry/opentelemetry-rust/pull/1391) - Adjusted `chrono` features to reduce number of transitive dependencies. [#1569](https://github.com/open-telemetry/opentelemetry-rust/pull/1569) +- The default feature now includes logs, metrics and trace. ## v0.2.0 diff --git a/opentelemetry-stdout/Cargo.toml b/opentelemetry-stdout/Cargo.toml index 85649b0234..44475ac502 100644 --- a/opentelemetry-stdout/Cargo.toml +++ b/opentelemetry-stdout/Cargo.toml @@ -19,7 +19,7 @@ rust-version = "1.65" default = ["trace", "metrics", "logs"] trace = ["opentelemetry/trace", "opentelemetry_sdk/trace", "futures-util"] metrics = ["async-trait", "opentelemetry/metrics", "opentelemetry_sdk/metrics"] -logs = ["opentelemetry/logs", "opentelemetry_sdk/logs", "async-trait", "thiserror"] +logs = ["opentelemetry/logs", "opentelemetry_sdk/logs", "async-trait", "thiserror", "opentelemetry_sdk/logs_level_enabled"] [dependencies] async-trait = { workspace = true, optional = true } @@ -35,4 +35,7 @@ ordered-float = { workspace = true } [dev-dependencies] opentelemetry = { path = "../opentelemetry", features = ["metrics"] } opentelemetry_sdk = { path = "../opentelemetry-sdk", features = ["rt-tokio", "metrics"] } +opentelemetry-appender-tracing = { version = "0.3.0", path = "../opentelemetry-appender-tracing"} +tracing = { workspace = true, features = ["std"]} +tracing-subscriber = { workspace = true, features = ["registry", "std"] } tokio = { workspace = true, features = ["full"] } diff --git a/opentelemetry-stdout/examples/basic.rs b/opentelemetry-stdout/examples/basic.rs index 18d2ab6d8d..6c1ce10e03 100644 --- a/opentelemetry-stdout/examples/basic.rs +++ b/opentelemetry-stdout/examples/basic.rs @@ -31,6 +31,21 @@ fn init_metrics() { global::set_meter_provider(provider); } +#[cfg(feature = "logs")] +fn init_logs() -> opentelemetry_sdk::logs::LoggerProvider { + use opentelemetry_appender_tracing::layer; + use opentelemetry_sdk::logs::LoggerProvider; + use tracing_subscriber::prelude::*; + + let exporter = opentelemetry_stdout::LogExporter::default(); + let provider: LoggerProvider = LoggerProvider::builder() + .with_simple_exporter(exporter) + .build(); + let layer = layer::OpenTelemetryTracingBridge::new(&provider); + tracing_subscriber::registry().with(layer).init(); + provider +} + #[cfg(feature = "trace")] fn emit_span() { let tracer = global::tracer("stdout-test"); @@ -50,6 +65,12 @@ fn emit_metrics() { c.add(1, &[KeyValue::new("test_key", "test_value")]); } +#[cfg(feature = "logs")] +fn emit_log() { + use tracing::error; + error!(name: "my-event-name", target: "my-system", event_id = 20, user_name = "otel", user_email = "otel@opentelemetry.io"); +} + #[tokio::main] async fn main() -> Result<(), Box> { #[cfg(feature = "trace")] @@ -58,9 +79,23 @@ async fn main() -> Result<(), Box> { #[cfg(feature = "metrics")] init_metrics(); + #[cfg(feature = "logs")] + let logger_provider = init_logs(); + + #[cfg(feature = "logs")] + emit_log(); + + println!( + "======================================================================================" + ); + #[cfg(feature = "trace")] emit_span(); + println!( + "======================================================================================" + ); + #[cfg(feature = "metrics")] emit_metrics(); @@ -70,5 +105,8 @@ async fn main() -> Result<(), Box> { #[cfg(feature = "metrics")] global::shutdown_meter_provider(); + #[cfg(feature = "logs")] + drop(logger_provider); + Ok(()) }