feat: Implemented log rolling so the log file doesn't just grow exponentially [#60]

This commit is contained in:
2026-06-25 13:29:56 -06:00
parent 10e18af1bf
commit dd93fe117d
2 changed files with 19 additions and 4 deletions
+1 -1
View File
@@ -32,7 +32,7 @@ derivative = "2.2.0"
human-panic = "2.0.6" human-panic = "2.0.6"
indoc = "2.0.7" indoc = "2.0.7"
log = "0.4.29" log = "0.4.29"
log4rs = { version = "1.4.0", features = ["file_appender"] } log4rs = { version = "1.4.0", features = ["rolling_file_appender", "compound_policy", "size_trigger", "fixed_window_roller"] }
regex = "1.12.2" regex = "1.12.2"
reqwest = { version = "0.13.2", features = ["json"] } reqwest = { version = "0.13.2", features = ["json"] }
serde_yaml = "0.9.34" serde_yaml = "0.9.34"
+18 -3
View File
@@ -10,7 +10,10 @@ use anyhow::{Context, anyhow};
use colored::Colorize; use colored::Colorize;
use indicatif::{ProgressBar, ProgressStyle}; use indicatif::{ProgressBar, ProgressStyle};
use log::{LevelFilter, error}; use log::{LevelFilter, error};
use log4rs::append::file::FileAppender; use log4rs::append::rolling_file::policy::compound::roll::fixed_window::FixedWindowRoller;
use log4rs::append::rolling_file::policy::compound::trigger::size::SizeTrigger;
use log4rs::append::rolling_file::policy::compound::CompoundPolicy;
use log4rs::append::rolling_file::RollingFileAppender;
use log4rs::config::{Appender, Root}; use log4rs::config::{Appender, Root};
use log4rs::encode::pattern::PatternEncoder; use log4rs::encode::pattern::PatternEncoder;
use regex::Regex; use regex::Regex;
@@ -47,11 +50,23 @@ pub fn get_log_path() -> PathBuf {
} }
pub fn init_logging_config() -> log4rs::Config { pub fn init_logging_config() -> log4rs::Config {
let logfile = FileAppender::builder() let log_path = get_log_path();
let archive_pattern = log_path
.with_file_name("managarr.{}.log")
.to_string_lossy()
.into_owned();
let trigger = SizeTrigger::new(10 * 1024 * 1024);
let roller = FixedWindowRoller::builder()
.build(&archive_pattern, 3)
.unwrap();
let policy = CompoundPolicy::new(Box::new(trigger), Box::new(roller));
let logfile = RollingFileAppender::builder()
.encoder(Box::new(PatternEncoder::new( .encoder(Box::new(PatternEncoder::new(
"{d(%Y-%m-%d %H:%M:%S%.3f)(utc)} <{i}> [{l}] {f}:{L} - {m}{n}", "{d(%Y-%m-%d %H:%M:%S%.3f)(utc)} <{i}> [{l}] {f}:{L} - {m}{n}",
))) )))
.build(get_log_path()) .build(log_path, Box::new(policy))
.unwrap(); .unwrap();
log4rs::Config::builder() log4rs::Config::builder()