From cb0726120c926f44bd1db65c8bf11322af7447ae Mon Sep 17 00:00:00 2001 From: prplV Date: Wed, 4 Sep 2024 17:47:16 +0300 Subject: [PATCH] refactor --- .gitignore | 3 ++- logs/runner.log | 8 ++++++++ src/logger.rs | 46 ++++++++++++++++++++++++++++++++++++++++++++++ src/main.rs | 36 ++++-------------------------------- src/utils.rs | 6 +++++- 5 files changed, 65 insertions(+), 34 deletions(-) create mode 100644 logs/runner.log create mode 100644 src/logger.rs diff --git a/.gitignore b/.gitignore index 2a0038a..06149f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /target -.idea \ No newline at end of file +.idea +Dockerfile \ No newline at end of file diff --git a/logs/runner.log b/logs/runner.log new file mode 100644 index 0000000..b25f304 --- /dev/null +++ b/logs/runner.log @@ -0,0 +1,8 @@ +Container-||NODE|| 04-09-2024 16:56:03 [INFO] - Runner is configurating... +Container-||NODE|| 04-09-2024 16:56:03 [INFO] - Local config is actual +Container-||NODE|| 04-09-2024 16:56:03 [INFO] - Current runner configuration: 1721381809090 +Container-||NODE|| 04-09-2024 16:56:03 [INFO] - Runner is ready. Initializing... +Container-||NODE|| 04-09-2024 16:56:03 [INFO] - Process 'web-server' on stage: /home/vladislav/web/web-server. Depends on 2 file(s), 1 service(s) +Container-||NODE|| 04-09-2024 16:56:03 [INFO] - Process 'temp-process' on stage: /home/vladislav/web/temp-process. Depends on 1 file(s), 2 service(s) +Container-||NODE|| 04-09-2024 16:56:03 [WARN] - Process web-server is running now! +Container-||NODE|| 04-09-2024 16:56:03 [WARN] - Process temp-process is running now! diff --git a/src/logger.rs b/src/logger.rs new file mode 100644 index 0000000..2e0a449 --- /dev/null +++ b/src/logger.rs @@ -0,0 +1,46 @@ +use std::fs::OpenOptions; +use std::process::Command; +use chrono::Local; +use env_logger::Builder; +use std::io::Write; +use log::LevelFilter; +use tokio::fs::File; +use tokio::io::BufWriter; +use crate::utils::get_container_id; + +// struct CustomLogger { +// stdout: W, +// file_writer: BufWriter, +// } + +pub fn setup_logger() -> Result<(), crate::structs::CustomError> { + // if Command::new("sh").args(["-c", "mkdir logs"]).output().is_err() { + // println!("Error: Cannot init logs directory"); + // std::process::exit(1); + // } + // + // let log_target = Box::new(OpenOptions::new().create(true).append(true).open("./logs/runner.log").unwrap_or_else(|_| { + // println!("Error: Cannot create local log-file in /logs/runner.log, returning..."); + // std::process::exit(1); + // })); + + + // building logger with current output format + Builder::new() + .format(move |buf, record|{ + writeln!(buf, + "Container-{}| {} [{}] - {}", + get_container_id().unwrap_or("||NODE|".to_string()), + Local::now().format("%d-%m-%Y %H:%M:%S"), + record.level(), + record.args(), + ) + }) + .filter(None, LevelFilter::Info) + .target(env_logger::Target::Stdout) + // .target(env_logger::Target::Pipe(log_target)) + .init(); + + + Ok(()) +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 6caa083..0c557d5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,48 +4,20 @@ mod files; mod prcs; mod utils; mod services; +mod logger; -// use tokio::fs::File; -use std::fs::{File, OpenOptions}; use tokio::sync::mpsc; use std::sync::Arc; -use std::io::Write; -use std::process::Command; -use chrono::Local; -use env_logger::Builder; -use log::{error, LevelFilter}; +use log::error; use structs::*; use config::*; use utils::*; +use logger::setup_logger; #[tokio::main(flavor = "multi_thread")] async fn main() { - - if Command::new("sh").args(["-c", "'mkdir /var/log/runner-rs/'"]).output().is_err() { - println!("Error: Run runner in sudo mode"); - } - - let log_target = Box::new(OpenOptions::new().create_new(true).append(true).open("/var/log/runner-rs/runner.log").unwrap_or_else(|_| { - println!("Error: Cannot create local log-file in /var/log/runner-rs, returning..."); - std::process::exit(1); - })); - - // building logger with current output format - Builder::new() - .format(move |buf, record|{ - writeln!(buf, - "Container-{}| {} [{}] - {}", - get_container_id().unwrap_or("||undefined container id|".to_string()), - Local::now().format("%d-%m-%Y %H:%M:%S"), - record.level(), - record.args(), - ) - }) - .target(env_logger::Target::Stdout) - .target(env_logger::Target::Pipe(log_target)) - .filter(None, LevelFilter::Info) - .init(); + let _ = setup_logger(); log::info!("Runner is configurating..."); diff --git a/src/utils.rs b/src/utils.rs index ee18711..171b957 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,10 +1,13 @@ +use std::fs::OpenOptions; use std::sync::Arc; use crate::structs::TrackingProcess; use tokio::sync::mpsc; use inotify::Inotify; use std::process::Command; +use chrono::Local; +use env_logger::Builder; use crate::files::create_watcher; -use log::{error, warn}; +use log::{error, warn, LevelFilter}; use crate::prcs::{ is_active, is_frozen, @@ -16,6 +19,7 @@ use crate::prcs::{ }; use tokio::time::Duration; use tokio::join; +use std::io::Write; use crate::files::file_handler; use crate::services::service_handler;