From 3553b28e8ec0f1e9caaa2717714bfffee3f82ac4 Mon Sep 17 00:00:00 2001 From: samwondim Date: Thu, 15 Aug 2024 11:18:55 +0300 Subject: [PATCH 1/3] feat: Implemented output logger functionality. --- metta-run/src/main.rs | 5 ++++- metta-run/src/tools/logger.rs | 31 +++++++++++++++++++++++++++++++ metta-run/src/tools/mod.rs | 1 + 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 metta-run/src/tools/logger.rs create mode 100644 metta-run/src/tools/mod.rs diff --git a/metta-run/src/main.rs b/metta-run/src/main.rs index ffad28d..355b86c 100644 --- a/metta-run/src/main.rs +++ b/metta-run/src/main.rs @@ -3,6 +3,7 @@ use formatters::commands::{format, FormatterCommands}; use std::io; mod formatters; mod runners; +mod tools; fn main() -> io::Result<()> { #[derive(Parser)] @@ -22,7 +23,10 @@ fn main() -> io::Result<()> { let args = Args::parse(); let file = args.file; + + let start_time = tools::logger::start_timer(); let metta_output = runners::metta::run(file); + tools::logger::stop_timer(start_time, &metta_output)?; if let Some(command) = args.commands { match command { @@ -31,6 +35,5 @@ fn main() -> io::Result<()> { } else { println!("{}", metta_output); } - Ok(()) } diff --git a/metta-run/src/tools/logger.rs b/metta-run/src/tools/logger.rs new file mode 100644 index 0000000..9f968f3 --- /dev/null +++ b/metta-run/src/tools/logger.rs @@ -0,0 +1,31 @@ +use chrono::Local; +use std::fs::OpenOptions; +use std::io::Write; +use std::time::{Duration, Instant}; + +pub fn start_timer() -> Instant { + Instant::now() +} + +pub fn stop_timer(start_time: Instant, metta_output: &String) -> Result<(), std::io::Error> { + let now = Local::now(); + let formatted_date = now.format("%Y-%m-%d").to_string(); + let log_file_name = format!("{}.log", formatted_date); + + let mut output_file = OpenOptions::new() + .append(true) + .create(true) + .open(&log_file_name)?; + + let end_time = Instant::now(); + let elapsed_time = end_time.duration_since(start_time); + let final_output = format!( + "\nStart time: {}\nElapsed time: {:.3}\n{}\n", + now.format("%Y-%m-%d %H-%m-%s").to_string(), + elapsed_time.as_secs_f32(), + metta_output + ); + output_file.write_all(final_output.as_bytes())?; + + Ok(()) +} diff --git a/metta-run/src/tools/mod.rs b/metta-run/src/tools/mod.rs new file mode 100644 index 0000000..d991728 --- /dev/null +++ b/metta-run/src/tools/mod.rs @@ -0,0 +1 @@ +pub mod logger; From f956c5fe0d3c59f95b661ecafeafa42c07d9455f Mon Sep 17 00:00:00 2001 From: samwondim Date: Thu, 15 Aug 2024 11:20:50 +0300 Subject: [PATCH 2/3] [ENH] add additional chrono crate --- metta-run/Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/metta-run/Cargo.toml b/metta-run/Cargo.toml index f7f2e90..d3ec4b3 100644 --- a/metta-run/Cargo.toml +++ b/metta-run/Cargo.toml @@ -6,4 +6,5 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +chrono = "0.4.38" clap = { version = "4.5.13", features = ["derive"] } From 0f0cf243ec2a842cbee44105d846f2dec5974c3e Mon Sep 17 00:00:00 2001 From: samwondim Date: Thu, 15 Aug 2024 11:29:18 +0300 Subject: [PATCH 3/3] [ENH] refactor logger.rs --- metta-run/src/tools/logger.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/metta-run/src/tools/logger.rs b/metta-run/src/tools/logger.rs index 9f968f3..e5b0e17 100644 --- a/metta-run/src/tools/logger.rs +++ b/metta-run/src/tools/logger.rs @@ -10,12 +10,8 @@ pub fn start_timer() -> Instant { pub fn stop_timer(start_time: Instant, metta_output: &String) -> Result<(), std::io::Error> { let now = Local::now(); let formatted_date = now.format("%Y-%m-%d").to_string(); - let log_file_name = format!("{}.log", formatted_date); - let mut output_file = OpenOptions::new() - .append(true) - .create(true) - .open(&log_file_name)?; + let log_file_name = format!("{}.log", formatted_date); let end_time = Instant::now(); let elapsed_time = end_time.duration_since(start_time); @@ -25,6 +21,12 @@ pub fn stop_timer(start_time: Instant, metta_output: &String) -> Result<(), std: elapsed_time.as_secs_f32(), metta_output ); + + let mut output_file = OpenOptions::new() + .append(true) + .create(true) + .open(&log_file_name)?; + output_file.write_all(final_output.as_bytes())?; Ok(())