From f8563b5839460a3e16b909b64af546d4ffbae640 Mon Sep 17 00:00:00 2001 From: pibiba Date: Fri, 22 Nov 2024 13:33:15 +0700 Subject: [PATCH 1/2] Add chrono to dependencies list --- Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.toml b/Cargo.toml index 664d45c..25d575b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,7 @@ cached = "0.42.0" rand = "0.8.5" globset = "0.4" time = { version = "0.3", features = ["local-offset", "formatting"]} +chrono = "0.4.38" [dev-dependencies] criterion = { version = "0.4", features = ["html_reports"] } From 429bf263d98992ed62225aa27349ff3b42981dc2 Mon Sep 17 00:00:00 2001 From: pibiba Date: Fri, 22 Nov 2024 13:40:19 +0700 Subject: [PATCH 2/2] Update time handling to rely solely on chrono --- src/logger.rs | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/src/logger.rs b/src/logger.rs index 6b8a336..798dfc2 100644 --- a/src/logger.rs +++ b/src/logger.rs @@ -3,13 +3,12 @@ //! It allows the program to log messages with different severity levels (error, warning, log) and display them in a human-readable format. //! //! The log messages contain a timestamp, a severity level and the message. The logs are stored in a vector and are serializable and deserializable. The logs can also be displayed in a human-readable format. -extern crate time; use efcl::{color, Color}; use serde::{Deserialize, Serialize}; use std::fmt; use std::time::SystemTime; -use time::{format_description, OffsetDateTime}; +use chrono::{DateTime, Local}; #[derive(Debug, Eq, PartialEq, Serialize, Deserialize)] /// The Severity enum is used to represent the different levels of severity of a log message. It has three possible values: @@ -44,22 +43,9 @@ impl fmt::Display for Log { Severity::Log => color!(Color::BLUE, "notice:"), }; - let date_time_fmt = - format_description::parse("[year]-[month]-[day] [hour]:[minute]:[second]") - .expect("Invalid time format."); + let local_time: DateTime = DateTime::::from(self.timestamp); - let mut time = OffsetDateTime::from(self.timestamp) - .format(&date_time_fmt) - .unwrap(); - - if OffsetDateTime::now_local().is_ok() { - time = OffsetDateTime::now_local() - .expect("IndeterminateOffset") - .format(&date_time_fmt) - .unwrap(); - } - - write!(f, "{} {} -> {}", severity, time, self.message) + write!(f, "{} {} -> {}", severity, local_time.format("%Y-%m-%d %H:%M:%S"), self.message) } }