Expand description
v1.4.90 P2-C: audit log Option
背景:之前 audit log 把 Option<f64> 用 ?req.price(tracing 的 Debug
shorthand)记录,渲染成 JSON 字符串 "Some(400.0)" / "None",下游 jq /
DuckDB 数值聚合炸(aggregator 期望 400.0 number 或 null)。
修法:用 NaN sentinel 把 Option<f64> flatten 成 f64,tracing-subscriber
的 JSON formatter 内部走 serde_json::Value::from(f64::NAN) →
Number::from_f64(NaN) = None → Value::Null。
整数 / 字符串同理(i32 → f64 NaN sentinel;&str → “” 哨兵)。
验证依据:
tracing_subscriber::fmt::format::jsonline 501record_f64直接调serde_json::Value::from(value)serde_json::Value::from(f64)impl:Number::from_f64(f).map_or(Value::Null, Value::Number)