Skip to content

Commit d3b3f70

Browse files
authored
Update OTLP examples to use opentelemetry-appender-tracing, with filtering of the events from specific crates. (#1798)
1 parent d08a861 commit d3b3f70

File tree

4 files changed

+45
-14
lines changed

4 files changed

+45
-14
lines changed

opentelemetry-otlp/examples/basic-otlp-http/Cargo.toml

+3-2
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ opentelemetry-appender-tracing = { path = "../../../opentelemetry-appender-traci
1414
opentelemetry-semantic-conventions = { path = "../../../opentelemetry-semantic-conventions" }
1515

1616
tokio = { workspace = true, features = ["full"] }
17-
opentelemetry-appender-log = { path = "../../../opentelemetry-appender-log", default-features = false}
18-
log = { workspace = true }
17+
tracing = { workspace = true, features = ["std"]}
18+
tracing-core = { workspace = true }
19+
tracing-subscriber = { workspace = true, features = ["env-filter","registry", "std"] }

opentelemetry-otlp/examples/basic-otlp-http/src/main.rs

+19-5
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
1-
use log::{info, Level};
21
use once_cell::sync::Lazy;
32
use opentelemetry::{
43
global,
54
metrics::{MetricsError, Unit},
65
trace::{TraceContextExt, TraceError, Tracer, TracerProvider as _},
76
Key, KeyValue,
87
};
9-
use opentelemetry_appender_log::OpenTelemetryLogBridge;
8+
use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge;
109
use opentelemetry_otlp::WithExportConfig;
1110
use opentelemetry_sdk::trace as sdktrace;
1211
use opentelemetry_sdk::{
1312
logs::{self as sdklogs, Config},
1413
Resource,
1514
};
15+
use tracing::info;
16+
use tracing_subscriber::prelude::*;
17+
use tracing_subscriber::EnvFilter;
1618

1719
use std::error::Error;
1820

@@ -88,9 +90,21 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
8890
let logger_provider = init_logs().unwrap();
8991

9092
// Create a new OpenTelemetryLogBridge using the above LoggerProvider.
91-
let otel_log_appender = OpenTelemetryLogBridge::new(&logger_provider);
92-
log::set_boxed_logger(Box::new(otel_log_appender)).unwrap();
93-
log::set_max_level(Level::Info.to_level_filter());
93+
let layer = OpenTelemetryTracingBridge::new(&logger_provider);
94+
95+
// add a tracing filter to filter the events generated from the crates used by opentelemetry-otlp
96+
// Below filter level means:
97+
// - Logs at `info` level and above are allowed by default.
98+
// - Only `error` level logs from `hyper`, `tonic`, and `reqwest` crates are allowed.
99+
let filter = EnvFilter::new("info")
100+
.add_directive("hyper=error".parse().unwrap())
101+
.add_directive("tonic=error".parse().unwrap())
102+
.add_directive("reqwest=error".parse().unwrap());
103+
104+
tracing_subscriber::registry()
105+
.with(filter)
106+
.with(layer)
107+
.init();
94108

95109
let common_scope_attributes = vec![KeyValue::new("scope-key", "scope-value")];
96110
let tracer = global::tracer_provider()

opentelemetry-otlp/examples/basic-otlp/Cargo.toml

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,7 @@ opentelemetry_sdk = { path = "../../../opentelemetry-sdk", features = ["rt-tokio
1212
opentelemetry-otlp = { path = "../../../opentelemetry-otlp", features = ["tonic", "metrics", "logs"] }
1313
opentelemetry-semantic-conventions = { path = "../../../opentelemetry-semantic-conventions" }
1414
tokio = { version = "1.0", features = ["full"] }
15-
opentelemetry-appender-log = { path = "../../../opentelemetry-appender-log", default-features = false}
16-
log = { workspace = true }
15+
opentelemetry-appender-tracing = { path = "../../../opentelemetry-appender-tracing", default-features = false}
16+
tracing = { workspace = true, features = ["std"]}
17+
tracing-core = { workspace = true }
18+
tracing-subscriber = { workspace = true, features = ["env-filter","registry", "std"] }

opentelemetry-otlp/examples/basic-otlp/src/main.rs

+19-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use log::{info, Level};
21
use once_cell::sync::Lazy;
32
use opentelemetry::global;
43
use opentelemetry::logs::LogError;
@@ -8,11 +7,14 @@ use opentelemetry::{
87
trace::{TraceContextExt, Tracer},
98
Key, KeyValue,
109
};
11-
use opentelemetry_appender_log::OpenTelemetryLogBridge;
10+
use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge;
1211
use opentelemetry_otlp::{ExportConfig, WithExportConfig};
1312
use opentelemetry_sdk::logs::Config;
1413
use opentelemetry_sdk::{runtime, trace as sdktrace, Resource};
1514
use std::error::Error;
15+
use tracing::info;
16+
use tracing_subscriber::prelude::*;
17+
use tracing_subscriber::EnvFilter;
1618

1719
static RESOURCE: Lazy<Resource> = Lazy::new(|| {
1820
Resource::new(vec![KeyValue::new(
@@ -91,9 +93,21 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
9193
let logger_provider = init_logs().unwrap();
9294

9395
// Create a new OpenTelemetryLogBridge using the above LoggerProvider.
94-
let otel_log_appender = OpenTelemetryLogBridge::new(&logger_provider);
95-
log::set_boxed_logger(Box::new(otel_log_appender)).unwrap();
96-
log::set_max_level(Level::Info.to_level_filter());
96+
let layer = OpenTelemetryTracingBridge::new(&logger_provider);
97+
98+
// add a tracing filter to filter the events generated from the crates used by opentelemetry-otlp
99+
// Below filter level means:
100+
// - Logs at `info` level and above are allowed by default.
101+
// - Only `error` level logs from `hyper`, `tonic`, and `reqwest` crates are allowed.
102+
let filter = EnvFilter::new("info")
103+
.add_directive("hyper=error".parse().unwrap())
104+
.add_directive("tonic=error".parse().unwrap())
105+
.add_directive("reqwest=error".parse().unwrap());
106+
107+
tracing_subscriber::registry()
108+
.with(filter)
109+
.with(layer)
110+
.init();
97111

98112
let common_scope_attributes = vec![KeyValue::new("scope-key", "scope-value")];
99113
let tracer = global::tracer_provider()

0 commit comments

Comments
 (0)