Skip to content

Commit

Permalink
[Tracing Appender] Propagate event name to exporters (#1346)
Browse files Browse the repository at this point in the history
  • Loading branch information
lalitb committed Nov 10, 2023
1 parent 500fdfc commit a74ecd1
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 8 deletions.
2 changes: 1 addition & 1 deletion opentelemetry-appender-tracing/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ rust-version = "1.65"
[dependencies]
opentelemetry = { version = "0.21", path = "../opentelemetry", features = ["logs"] }
opentelemetry_sdk = { version = "0.21", path = "../opentelemetry-sdk", features = ["logs"] }
tracing = {version = "0.1.37", default-features = false, features = ["std"]}
tracing = {version = "0.1", default-features = false, features = ["std"]}
tracing-core = "0.1.31"
tracing-subscriber = { version = "0.3.0", default-features = false, features = ["registry", "std"] }
once_cell = "1.13.0"
Expand Down
2 changes: 1 addition & 1 deletion opentelemetry-appender-tracing/examples/basic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ fn main() {
let layer = layer::OpenTelemetryTracingBridge::new(&provider);
tracing_subscriber::registry().with(layer).init();

error!(target: "my-system", event_id = 20, event_name = "my-event_name", user_name = "otel", user_email = "otel@opentelemetry.io");
error!(name: "my-event-name", target: "my-system", event_id = 20, user_name = "otel", user_email = "otel@opentelemetry.io");
drop(provider);
}
5 changes: 5 additions & 0 deletions opentelemetry-appender-tracing/src/layer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,11 @@ where
log_record.severity_number = Some(map_severity_to_otel_severity(meta.level().as_str()));
log_record.severity_text = Some(meta.level().to_string().into());

// add the `name` metadata to attributes
// TBD - Propose this to be part of log_record metadata.
let vec = vec![("name", meta.name())];
log_record.attributes = Some(vec.into_iter().map(|(k, v)| (k.into(), v.into())).collect());

// Not populating ObservedTimestamp, instead relying on OpenTelemetry
// API to populate it with current time.

Expand Down
2 changes: 1 addition & 1 deletion opentelemetry-user-events-logs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ chrono = { version="0.4", default-features = false, features=["std"] }

[dev-dependencies]
opentelemetry-appender-tracing = { path = "../opentelemetry-appender-tracing" }
tracing = { version = "0.1.37", default-features = false, features = ["std"] }
tracing = { version = "0.1", default-features = false, features = ["std"] }
tracing-core = "0.1.31"
tracing-subscriber = { version = "0.3.0", default-features = false, features = ["registry", "std"] }
microbench = "0.5"
Expand Down
2 changes: 1 addition & 1 deletion opentelemetry-user-events-logs/examples/basic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ fn main() {
// event_id is also passed as an attribute now, there is nothing in metadata where a
// numeric id can be stored.
error!(
event_name = "my-event-name",
name: "my-event-name",
event_id = 20,
user_name = "otel user",
user_email = "otel@opentelemetry.io"
Expand Down
16 changes: 12 additions & 4 deletions opentelemetry-user-events-logs/src/logs/exporter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@ pub(crate) struct UserEventsExporter {
}

const EVENT_ID: &str = "event_id";
const EVENT_NAME: &str = "event_name";
const EVENT_NAME_PRIMARY: &str = "event_name";
const EVENT_NAME_SECONDARY: &str = "name";

//TBD - How to configure provider name and provider group
impl UserEventsExporter {
Expand Down Expand Up @@ -222,11 +223,17 @@ impl UserEventsExporter {
event_id = *value;
continue;
}
(EVENT_NAME, AnyValue::String(value)) => {
(EVENT_NAME_PRIMARY, AnyValue::String(value)) => {
is_event_name = true;
event_name = value.as_str();
continue;
}
(EVENT_NAME_SECONDARY, AnyValue::String(value)) => {
if !is_event_name {
event_name = value.as_str();
}
continue;
}
_ => {
if !is_part_c_present {
eb.add_struct_with_bookmark("PartC", 1, 0, &mut cs_c_bookmark);
Expand All @@ -237,6 +244,7 @@ impl UserEventsExporter {
}
}
}

if is_part_c_present {
eb.set_struct_field_count(cs_c_bookmark, cs_c_count);
}
Expand All @@ -245,7 +253,7 @@ impl UserEventsExporter {
let mut cs_b_bookmark: usize = 0;
let mut cs_b_count = 0;
eb.add_struct_with_bookmark("PartB", 1, 0, &mut cs_b_bookmark);
eb.add_str("_typename", "Logs", FieldFormat::Default, 0);
eb.add_str("_typeName", "Logs", FieldFormat::Default, 0);
cs_b_count += 1;

if log_data.record.body.is_some() {
Expand Down Expand Up @@ -282,7 +290,7 @@ impl UserEventsExporter {
eb.add_value("eventId", event_id, FieldFormat::SignedInt, 0);
cs_b_count += 1;
}
if is_event_name {
if !event_name.is_empty() {
eb.add_str("name", event_name, FieldFormat::Default, 0);
cs_b_count += 1;
}
Expand Down

0 comments on commit a74ecd1

Please sign in to comment.