From bdb01d2ebe642d74ecf801d0f0030ae2be2c4a80 Mon Sep 17 00:00:00 2001 From: Thilo Behnke Date: Tue, 5 Jul 2022 23:34:43 +0200 Subject: [PATCH] dev-ops/switch-server-to-env-logger --- .gitignore | 1 + server/Cargo.toml | 2 +- server/src/main.rs | 45 +++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 890a459..ff75ce3 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ bin/ pkg/ wasm-pack.log /.idea +/log diff --git a/server/Cargo.toml b/server/Cargo.toml index 505173c..cb6bc7d 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -19,7 +19,7 @@ futures = { version = "0.3.12" } async-trait = "0.1.56" uuid = { version = "1.1.2", features = ["v4"] } log = "0.4" -env_logger = "0.9.0" +log4rs = "1.0.0" [dev-dependencies] rstest = "0.12.0" diff --git a/server/src/main.rs b/server/src/main.rs index 72603eb..9efef16 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,6 +1,15 @@ extern crate core; -use log::{debug, error, info, Level}; +use log::{debug, error, info, Level, LevelFilter}; +use log4rs::append::console::{ConsoleAppender, ConsoleAppenderConfig}; +use log4rs::append::file::FileAppender; +use log4rs::append::rolling_file::policy::compound::CompoundPolicy; +use log4rs::append::rolling_file::policy::compound::roll::delete::DeleteRoller; +use log4rs::append::rolling_file::policy::compound::trigger::size::SizeTrigger; +use log4rs::append::rolling_file::RollingFileAppender; +use log4rs::Config; +use log4rs::config::{Appender, Logger, Root}; +use log4rs::encode::pattern::PatternEncoder; use crate::http::HttpServer; mod hash; @@ -16,7 +25,39 @@ mod session; #[tokio::main] pub async fn main() { - env_logger::init(); + let compound_policy = Box::new(CompoundPolicy::new(Box::new(SizeTrigger::new(2u64.pow(20) * 10)), Box::new(DeleteRoller::new()))); + let logfile = RollingFileAppender::builder() + .encoder(Box::new(PatternEncoder::new("{d(%Y-%m-%d %H:%M:%S%.f)} [{l}] - {m}\n"))) + .append(true) + .build("log/output.log", compound_policy).unwrap(); + + let stdout = ConsoleAppender::builder() + .encoder(Box::new(PatternEncoder::new("[{l}] {m}\n"))) + .build(); + + let config = Config::builder() + .appenders( + vec![ + Appender::builder().build("stdout", Box::new(stdout)), + Appender::builder().build("logfile", Box::new(logfile)), + ] + ) + .logger( + Logger::builder() + .appender("logfile") + .additive(true) + .build("server", LevelFilter::Trace) + ) + .build(Root::builder() + .appender("stdout") + .build(LevelFilter::Info)).unwrap(); + + let logger_res = log4rs::init_config(config); + if let Err(e) = logger_res { + eprintln!("Failed to setup logger: {:?}", e); + return; + } + info!("preparing environment"); let kafka_host_env = std::env::var("KAFKA_HOST"); let kafka_host = match kafka_host_env {