Skip to content

Commit a74ecd1

Browse files
authored
[Tracing Appender] Propagate event name to exporters (#1346)
1 parent 500fdfc commit a74ecd1

File tree

6 files changed

+21
-8
lines changed

6 files changed

+21
-8
lines changed

opentelemetry-appender-tracing/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ rust-version = "1.65"
1313
[dependencies]
1414
opentelemetry = { version = "0.21", path = "../opentelemetry", features = ["logs"] }
1515
opentelemetry_sdk = { version = "0.21", path = "../opentelemetry-sdk", features = ["logs"] }
16-
tracing = {version = "0.1.37", default-features = false, features = ["std"]}
16+
tracing = {version = "0.1", 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"

opentelemetry-appender-tracing/examples/basic.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,6 @@ fn main() {
2323
let layer = layer::OpenTelemetryTracingBridge::new(&provider);
2424
tracing_subscriber::registry().with(layer).init();
2525

26-
error!(target: "my-system", event_id = 20, event_name = "my-event_name", user_name = "otel", user_email = "[email protected]");
26+
error!(name: "my-event-name", target: "my-system", event_id = 20, user_name = "otel", user_email = "[email protected]");
2727
drop(provider);
2828
}

opentelemetry-appender-tracing/src/layer.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,11 @@ where
103103
log_record.severity_number = Some(map_severity_to_otel_severity(meta.level().as_str()));
104104
log_record.severity_text = Some(meta.level().to_string().into());
105105

106+
// add the `name` metadata to attributes
107+
// TBD - Propose this to be part of log_record metadata.
108+
let vec = vec![("name", meta.name())];
109+
log_record.attributes = Some(vec.into_iter().map(|(k, v)| (k.into(), v.into())).collect());
110+
106111
// Not populating ObservedTimestamp, instead relying on OpenTelemetry
107112
// API to populate it with current time.
108113

opentelemetry-user-events-logs/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ chrono = { version="0.4", default-features = false, features=["std"] }
2121

2222
[dev-dependencies]
2323
opentelemetry-appender-tracing = { path = "../opentelemetry-appender-tracing" }
24-
tracing = { version = "0.1.37", default-features = false, features = ["std"] }
24+
tracing = { version = "0.1", default-features = false, features = ["std"] }
2525
tracing-core = "0.1.31"
2626
tracing-subscriber = { version = "0.3.0", default-features = false, features = ["registry", "std"] }
2727
microbench = "0.5"

opentelemetry-user-events-logs/examples/basic.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ fn main() {
3030
// event_id is also passed as an attribute now, there is nothing in metadata where a
3131
// numeric id can be stored.
3232
error!(
33-
event_name = "my-event-name",
33+
name: "my-event-name",
3434
event_id = 20,
3535
user_name = "otel user",
3636
user_email = "[email protected]"

opentelemetry-user-events-logs/src/logs/exporter.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ pub(crate) struct UserEventsExporter {
5252
}
5353

5454
const EVENT_ID: &str = "event_id";
55-
const EVENT_NAME: &str = "event_name";
55+
const EVENT_NAME_PRIMARY: &str = "event_name";
56+
const EVENT_NAME_SECONDARY: &str = "name";
5657

5758
//TBD - How to configure provider name and provider group
5859
impl UserEventsExporter {
@@ -222,11 +223,17 @@ impl UserEventsExporter {
222223
event_id = *value;
223224
continue;
224225
}
225-
(EVENT_NAME, AnyValue::String(value)) => {
226+
(EVENT_NAME_PRIMARY, AnyValue::String(value)) => {
226227
is_event_name = true;
227228
event_name = value.as_str();
228229
continue;
229230
}
231+
(EVENT_NAME_SECONDARY, AnyValue::String(value)) => {
232+
if !is_event_name {
233+
event_name = value.as_str();
234+
}
235+
continue;
236+
}
230237
_ => {
231238
if !is_part_c_present {
232239
eb.add_struct_with_bookmark("PartC", 1, 0, &mut cs_c_bookmark);
@@ -237,6 +244,7 @@ impl UserEventsExporter {
237244
}
238245
}
239246
}
247+
240248
if is_part_c_present {
241249
eb.set_struct_field_count(cs_c_bookmark, cs_c_count);
242250
}
@@ -245,7 +253,7 @@ impl UserEventsExporter {
245253
let mut cs_b_bookmark: usize = 0;
246254
let mut cs_b_count = 0;
247255
eb.add_struct_with_bookmark("PartB", 1, 0, &mut cs_b_bookmark);
248-
eb.add_str("_typename", "Logs", FieldFormat::Default, 0);
256+
eb.add_str("_typeName", "Logs", FieldFormat::Default, 0);
249257
cs_b_count += 1;
250258

251259
if log_data.record.body.is_some() {
@@ -282,7 +290,7 @@ impl UserEventsExporter {
282290
eb.add_value("eventId", event_id, FieldFormat::SignedInt, 0);
283291
cs_b_count += 1;
284292
}
285-
if is_event_name {
293+
if !event_name.is_empty() {
286294
eb.add_str("name", event_name, FieldFormat::Default, 0);
287295
cs_b_count += 1;
288296
}

0 commit comments

Comments
 (0)