fn on_close()

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,
                );
            }
        }
    }