in src/kvp.rs [301:339]
fn on_close(&self, id: Id, ctx: TracingContext<S>) {
if let Some(span) = ctx.span(&id) {
let span_status = span
.extensions()
.get::<SpanStatus>()
.copied()
.unwrap_or(SpanStatus::Success);
let end_time = SystemTime::now();
let span_context = span.metadata();
let span_id = Uuid::new_v4();
if let Some(start_instant) = span.extensions().get::<MyInstant>() {
let elapsed = start_instant.elapsed();
let start_time =
end_time.checked_sub(elapsed).unwrap_or(UNIX_EPOCH);
let start_time_dt = DateTime::<Utc>::from(start_time)
.format("%Y-%m-%dT%H:%M:%S%.3fZ");
let end_time_dt = DateTime::<Utc>::from(end_time)
.format("%Y-%m-%dT%H:%M:%S%.3fZ");
let event_value = format!(
"Start: {} | End: {} | Status: {}",
start_time_dt, end_time_dt, span_status
);
self.handle_kvp_operation(
span_status.level(),
span_context.name(),
&span_id.to_string(),
&event_value,
);
}
}
}