pull/9/head
prplV 2024-09-04 17:47:16 +03:00
parent e2d2100ce9
commit cb0726120c
5 changed files with 65 additions and 34 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
/target /target
.idea .idea
Dockerfile

8
logs/runner.log Normal file
View File

@ -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!

46
src/logger.rs Normal file
View File

@ -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<W: Write> {
// stdout: W,
// file_writer: BufWriter<File>,
// }
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(())
}

View File

@ -4,48 +4,20 @@ mod files;
mod prcs; mod prcs;
mod utils; mod utils;
mod services; mod services;
mod logger;
// use tokio::fs::File;
use std::fs::{File, OpenOptions};
use tokio::sync::mpsc; use tokio::sync::mpsc;
use std::sync::Arc; use std::sync::Arc;
use std::io::Write; use log::error;
use std::process::Command;
use chrono::Local;
use env_logger::Builder;
use log::{error, LevelFilter};
use structs::*; use structs::*;
use config::*; use config::*;
use utils::*; use utils::*;
use logger::setup_logger;
#[tokio::main(flavor = "multi_thread")] #[tokio::main(flavor = "multi_thread")]
async fn main() { async fn main() {
let _ = setup_logger();
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();
log::info!("Runner is configurating..."); log::info!("Runner is configurating...");

View File

@ -1,10 +1,13 @@
use std::fs::OpenOptions;
use std::sync::Arc; use std::sync::Arc;
use crate::structs::TrackingProcess; use crate::structs::TrackingProcess;
use tokio::sync::mpsc; use tokio::sync::mpsc;
use inotify::Inotify; use inotify::Inotify;
use std::process::Command; use std::process::Command;
use chrono::Local;
use env_logger::Builder;
use crate::files::create_watcher; use crate::files::create_watcher;
use log::{error, warn}; use log::{error, warn, LevelFilter};
use crate::prcs::{ use crate::prcs::{
is_active, is_active,
is_frozen, is_frozen,
@ -16,6 +19,7 @@ use crate::prcs::{
}; };
use tokio::time::Duration; use tokio::time::Duration;
use tokio::join; use tokio::join;
use std::io::Write;
use crate::files::file_handler; use crate::files::file_handler;
use crate::services::service_handler; use crate::services::service_handler;