From 1030ef91aa47667ff244e087e8f25c24581e5f19 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Sun, 17 Oct 2021 00:50:34 +0000 Subject: [PATCH] Swap time for chrono and log subsecond precision for times The `time` crate appears to be basically undocumented (or, at least, I couldn't find any documentation). `chrono` isn't super well-documented, but at least its passable. --- Cargo.toml | 2 +- src/disk.rs | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index fb9dd5e..cc9f501 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ bech32 = "0.8" hex = "0.3" futures = "0.3" -time = "0.2" +chrono = "0.4" rand = "0.4" serde_json = { version = "1.0" } tokio = { version = "1.5", features = [ "io-util", "macros", "rt", "rt-multi-thread", "sync", "net", "time" ] } diff --git a/src/disk.rs b/src/disk.rs index 2c1834a..b641ebb 100644 --- a/src/disk.rs +++ b/src/disk.rs @@ -1,6 +1,7 @@ use crate::cli; use bitcoin::secp256k1::key::PublicKey; use bitcoin::BlockHash; +use chrono::Utc; use lightning::routing::network_graph::NetworkGraph; use lightning::util::logger::{Logger, Record}; use lightning::util::ser::{Readable, Writeable, Writer}; @@ -10,7 +11,6 @@ use std::fs::File; use std::io::{BufRead, BufReader, BufWriter}; use std::net::SocketAddr; use std::path::Path; -use time::OffsetDateTime; pub(crate) struct FilesystemLogger { data_dir: String, @@ -27,7 +27,10 @@ impl Logger for FilesystemLogger { let raw_log = record.args.to_string(); let log = format!( "{} {:<5} [{}:{}] {}\n", - OffsetDateTime::now_utc().format("%F %T"), + // Note that a "real" lightning node almost certainly does *not* want subsecond + // precision for message-receipt information as it makes log entries a target for + // deanonymization attacks. For testing, however, its quite useful. + Utc::now().format("%Y-%m-%d %H:%M:%S%.3f"), record.level.to_string(), record.module_path, record.line, -- 2.30.2