Skip to content

Commit 6930e87

Browse files
authored
Tracing appender and user_event exporter minor fixes (#1123)
1 parent 3209577 commit 6930e87

File tree

4 files changed

+51
-34
lines changed

4 files changed

+51
-34
lines changed

opentelemetry-appender-tracing/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ license = "Apache-2.0"
1111
rust-version = "1.60"
1212

1313
[dependencies]
14-
opentelemetry_api = { version = "0.19", path = "../opentelemetry-api", features = ["logs"]}
15-
opentelemetry_sdk = { version = "0.19", path = "../opentelemetry-sdk", features = ["logs"]}
14+
opentelemetry_api = { version = "0.19", path = "../opentelemetry-api", features = ["logs"] }
15+
opentelemetry_sdk = { version = "0.19", path = "../opentelemetry-sdk", features = ["logs"] }
1616
tracing = {version = "0.1.37", default-features = false, features = ["std"]}
1717
tracing-core = "0.1.31"
1818
tracing-subscriber = { version = "0.3.0", default-features = false, features = ["registry", "std"] }
1919
once_cell = "1.13.0"
2020

2121
[dev-dependencies]
22-
opentelemetry-stdout = {path = "../opentelemetry-stdout", features = ["logs"] }
22+
opentelemetry-stdout = { path = "../opentelemetry-stdout", features = ["logs"] }

opentelemetry-appender-tracing/src/layer.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,26 @@ impl<'a> tracing::field::Visit for EventVisitor<'a> {
2727
}
2828
}
2929

30+
fn record_f64(&mut self, field: &tracing::field::Field, value: f64) {
31+
if let Some(ref mut map) = self.log_record.attributes {
32+
map.insert(field.name().into(), value.into());
33+
} else {
34+
let mut map = OrderMap::with_capacity(1);
35+
map.insert(field.name().into(), value.into());
36+
self.log_record.attributes = Some(map);
37+
}
38+
}
39+
40+
fn record_i64(&mut self, field: &tracing::field::Field, value: i64) {
41+
if let Some(ref mut map) = self.log_record.attributes {
42+
map.insert(field.name().into(), value.into());
43+
} else {
44+
let mut map = OrderMap::with_capacity(1);
45+
map.insert(field.name().into(), value.into());
46+
self.log_record.attributes = Some(map);
47+
}
48+
}
49+
3050
// TODO: All record functions should be implemented instead of relying
3151
// of record_debug which stores everything as string.
3252
}

opentelemetry-user-events-logs/Cargo.toml

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,15 @@ license = "Apache-2.0"
1313
[dependencies]
1414
eventheader = "0.2"
1515
eventheader_dynamic = "0.2"
16-
opentelemetry_api = { version = "0.19", path = "../opentelemetry-api", features = ["logs"]}
17-
opentelemetry_sdk = { version = "0.19", path = "../opentelemetry-sdk", features = ["logs"]}
18-
opentelemetry-appender-log = {path = "../opentelemetry-appender-log"}
19-
tokio = {version="1.0", optional=true, features=["rt-multi-thread", "rt"]}
20-
async-std = {version="1.6"}
21-
async-trait = {version="0.1"}
22-
chrono = {version="0.4", default-features = false, features=["std"]}
23-
log = { version ="0.4.17", features = ["std"]}
16+
opentelemetry_api = { version = "0.19", path = "../opentelemetry-api", features = ["logs"] }
17+
opentelemetry_sdk = { version = "0.19", path = "../opentelemetry-sdk", features = ["logs"] }
18+
async-std = { version="1.6" }
19+
async-trait = { version="0.1" }
20+
chrono = { version="0.4", default-features = false, features=["std"] }
21+
22+
[dev-dependencies]
23+
opentelemetry-appender-tracing = { path = "../opentelemetry-appender-tracing" }
24+
tracing = { version = "0.1.37", default-features = false, features = ["std"] }
25+
tracing-core = "0.1.31"
26+
tracing-subscriber = { version = "0.3.0", default-features = false, features = ["registry", "std"] }
2427

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
//! run with `$ cargo run --example basic --all-features
22
3-
use opentelemetry_api::{logs::Logger, logs::LoggerProvider as _, logs::Severity};
4-
5-
use log::info;
3+
use opentelemetry_appender_tracing::layer;
64
use opentelemetry_sdk::logs::LoggerProvider;
7-
8-
use opentelemetry_appender_log::OpenTelemetryLogBridge;
95
use opentelemetry_user_events_logs::{ExporterConfig, ReentrantLogProcessor};
10-
use std::time::SystemTime;
6+
use tracing::error;
7+
use tracing_subscriber::prelude::*;
118

129
fn init_logger() -> LoggerProvider {
1310
let exporter_config = ExporterConfig { keyword: 1 };
@@ -18,23 +15,20 @@ fn init_logger() -> LoggerProvider {
1815
}
1916

2017
fn main() {
21-
// Example with log crate appender.
18+
// Example with tracing appender.
2219
let logger_provider = init_logger();
23-
let logger = OpenTelemetryLogBridge::new(&logger_provider);
24-
let _ = log::set_boxed_logger(Box::new(logger));
25-
log::set_max_level(log::LevelFilter::Info);
26-
info!("test");
20+
let layer = layer::OpenTelemetryTracingBridge::new(&logger_provider);
21+
tracing_subscriber::registry().with(layer).init();
2722

28-
// Example with LogBridge API - this is NOT supposed to be used by end user
29-
let logger_provider = init_logger();
30-
let logger: opentelemetry_sdk::logs::Logger = logger_provider.logger("test");
31-
let log_record = opentelemetry_api::logs::LogRecordBuilder::new()
32-
.with_body("test message".into())
33-
.with_severity_number(Severity::Debug)
34-
.with_attribute("key1", "value1")
35-
.with_attribute("event_id", 23)
36-
.with_attribute("event_name", "test_event")
37-
.with_timestamp(SystemTime::now())
38-
.build();
39-
logger.emit(log_record);
23+
// event_name is now passed as an attribute, but once https://github.com/tokio-rs/tracing/issues/1426
24+
// is done, it can be passed with name:"my-event-name", so it'll be available as metadata for
25+
// fast filtering.
26+
// event_id is also passed as an attribute now, there is nothing in metadata where a
27+
// numeric id can be stored.
28+
error!(
29+
event_name = "my-event-name",
30+
event_id = 20,
31+
user_name = "otel user",
32+
user_email = "[email protected]"
33+
);
4034
}

0 commit comments

Comments
 (0)