From 0fc39147f0a8b5283f1ae498cd4146b2e5da9475 Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Sun, 8 Dec 2024 11:15:52 -0800 Subject: [PATCH 1/2] Modify logs basic example to use tracing --- examples/logs-basic/Cargo.toml | 6 +++--- examples/logs-basic/README.md | 6 +++--- examples/logs-basic/src/main.rs | 27 +++++++++++---------------- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/examples/logs-basic/Cargo.toml b/examples/logs-basic/Cargo.toml index ae30dc6779..52b8182e31 100644 --- a/examples/logs-basic/Cargo.toml +++ b/examples/logs-basic/Cargo.toml @@ -9,7 +9,7 @@ publish = false opentelemetry = { path = "../../opentelemetry", features = ["logs"] } opentelemetry_sdk = { path = "../../opentelemetry-sdk", features = ["logs"] } opentelemetry-stdout = { path = "../../opentelemetry-stdout", features = ["logs"]} -opentelemetry-appender-log = { path = "../../opentelemetry-appender-log", default-features = false} +opentelemetry-appender-tracing = { path = "../../opentelemetry-appender-tracing", default-features = false} opentelemetry-semantic-conventions = { path = "../../opentelemetry-semantic-conventions" } -log = { workspace = true } -serde_json = { workspace = true } +tracing = { workspace = true, features = ["std"]} +tracing-subscriber = { workspace = true, features = ["registry", "std"] } diff --git a/examples/logs-basic/README.md b/examples/logs-basic/README.md index ce2fd2c284..8215b329c0 100644 --- a/examples/logs-basic/README.md +++ b/examples/logs-basic/README.md @@ -1,15 +1,15 @@ # OpenTelemetry Log Appender for log - Example -This example shows how to use the opentelemetry-appender-log crate, which is a +This example shows how to use the opentelemetry-appender-tracing crate, which is a [logging appender](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/glossary.md#log-appender--bridge) -that bridges logs from the [log crate](https://docs.rs/log/latest/log/) to +that bridges logs from the [tracing crate](https://tracing.rs/tracing/#events) to OpenTelemetry. The example setups a LoggerProvider with stdout exporter, so logs are emitted to stdout. ## Usage -Run the following, and Logs emitted using [log](https://docs.rs/log/latest/log/) +Run the following, and Logs emitted using [tracing](https://docs.rs/tracing/latest/tracing/) will be written out to stdout. ```shell diff --git a/examples/logs-basic/src/main.rs b/examples/logs-basic/src/main.rs index 8ebd092c80..f3a07eff5d 100644 --- a/examples/logs-basic/src/main.rs +++ b/examples/logs-basic/src/main.rs @@ -1,27 +1,22 @@ -use log::{error, Level}; use opentelemetry::KeyValue; -use opentelemetry_appender_log::OpenTelemetryLogBridge; +use opentelemetry_appender_tracing::layer; use opentelemetry_sdk::logs::LoggerProvider; use opentelemetry_sdk::Resource; -use opentelemetry_semantic_conventions::resource::SERVICE_NAME; +use tracing::error; +use tracing_subscriber::prelude::*; fn main() { - // Setup LoggerProvider with a stdout exporter let exporter = opentelemetry_stdout::LogExporter::default(); - let logger_provider = LoggerProvider::builder() - .with_resource(Resource::new([KeyValue::new( - SERVICE_NAME, - "logs-basic-example", + let provider: LoggerProvider = LoggerProvider::builder() + .with_resource(Resource::new(vec![KeyValue::new( + "service.name", + "log-appender-tracing-example", )])) .with_simple_exporter(exporter) .build(); + let layer = layer::OpenTelemetryTracingBridge::new(&provider); + tracing_subscriber::registry().with(layer).init(); - // Setup Log Appender for the log crate. - let otel_log_appender = OpenTelemetryLogBridge::new(&logger_provider); - log::set_boxed_logger(Box::new(otel_log_appender)).unwrap(); - log::set_max_level(Level::Error.to_level_filter()); - - // Emit logs using macros from the log crate. - // These logs gets piped through OpenTelemetry bridge and gets exported to stdout. - error!(target: "my-target", "hello from {}. My price is {}", "apple", 2.99); + error!(name: "my-event-name", target: "my-system", event_id = 20, user_name = "otel", user_email = "otel@opentelemetry.io", message = "This is an example message"); + let _ = provider.shutdown(); } From 0cdb8f8961ac29fe415e4c1e7955d99daae5ace7 Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Mon, 9 Dec 2024 09:23:07 -0800 Subject: [PATCH 2/2] Update examples/logs-basic/README.md Co-authored-by: Lalit Kumar Bhasin --- examples/logs-basic/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/logs-basic/README.md b/examples/logs-basic/README.md index 8215b329c0..5a1084aee2 100644 --- a/examples/logs-basic/README.md +++ b/examples/logs-basic/README.md @@ -1,4 +1,4 @@ -# OpenTelemetry Log Appender for log - Example +# OpenTelemetry Log Appender for tracing - Example This example shows how to use the opentelemetry-appender-tracing crate, which is a [logging