feat(probe): add ISO8601 timestamp in JSON report

This commit is contained in:
tianrking committed 2026-03-20 15:51:29 +08:00
1 parent c912a7e45c
commit e3dfb03da1
2 files changed
+16 -3

No files matched your search

+1
View File
@@ -20,6 +20,7 @@ tracing-subscriber.workspace = true
anyhow.workspace = true
serde.workspace = true
serde_json.workspace = true
time = { version = "0.3", features = ["formatting"] }
[target.'cfg(unix)'.dependencies]
nix.workspace = true
+15 -3
View File
@@ -16,6 +16,8 @@ use std::time::{Duration, Instant};
use clap::Parser;
use serde::Serialize;
use time::OffsetDateTime;
use time::format_description::well_known::Rfc3339;
use tracing::{debug, error, info, Level};
use tracing_subscriber::FmtSubscriber;
@@ -299,11 +301,13 @@ fn build_probe_report(results: Vec<ProbeNode>, timeout: Duration, group: String)
_ => stats.other += 1,
}
}
let generated_at = SystemTime::now()
.duration_since(SystemTime::UNIX_EPOCH)
.map_or(0, |d| d.as_secs());
ProbeReport {
schema_version: "1.0".to_string(),
generated_at: SystemTime::now()
.duration_since(SystemTime::UNIX_EPOCH)
.map_or(0, |d| d.as_secs()),
generated_at,
generated_at_iso8601: format_unix_ts_iso8601(generated_at),
timeout_ms: timeout.as_millis(),
selected_group: group,
summary: ProbeSummary { total, ok, fail },
@@ -312,6 +316,13 @@ fn build_probe_report(results: Vec<ProbeNode>, timeout: Duration, group: String)
}
}
fn format_unix_ts_iso8601(ts: u64) -> String {
OffsetDateTime::from_unix_timestamp(ts as i64)
.ok()
.and_then(|dt| dt.format(&Rfc3339).ok())
.unwrap_or_else(|| "1970-01-01T00:00:00Z".to_string())
}
fn print_probe_report(report: &ProbeReport) {
println!("Proxy probe:");
println!(" timeout_ms={}", report.timeout_ms);
@@ -354,6 +365,7 @@ fn print_probe_report(report: &ProbeReport) {
struct ProbeReport {
schema_version: String,
generated_at: u64,
generated_at_iso8601: String,
timeout_ms: u128,
selected_group: String,
summary: ProbeSummary,