Fix rolling file for logs
This commit is contained in:
parent
07005e60e1
commit
b15c15a5db
49
src/logs.rs
49
src/logs.rs
|
@ -1,3 +1,5 @@
|
|||
use log::LevelFilter;
|
||||
|
||||
use log4rs::{
|
||||
append::{
|
||||
console::ConsoleAppender,
|
||||
|
@ -13,73 +15,50 @@ use log4rs::{
|
|||
Config,
|
||||
};
|
||||
|
||||
const FILE_MAX_SIZE: u64 = 30000000;
|
||||
const FILE_MAX_SIZE: u64 = 30000000; //30 mB
|
||||
const LOGS_MAX_FILES: u32 = 10;
|
||||
const DEBUG_MAX_FILES: u32 = 20;
|
||||
|
||||
const LOG_FORMAT: &str = "{d(%Y-%m-%d %H:%M:%S)} | {({l}):5.5} | {f}:{L} — {m}{n}";
|
||||
const LOGS_FILE: &str = "logs/yorokobot_latest.log";
|
||||
const DEBUG_FILE: &str = "logs/debug/yorokobot_debug_latest.log";
|
||||
const LOGS_ARCHIVE_FILE_PATTERN: &str = "logs/yorokobot_{}.gz";
|
||||
const DEBUG_ARCHIVE_FILE_PATTERN: &str = "logs/debug/yorokobot_debug_{}.gz";
|
||||
|
||||
/// Configure the bot logger
|
||||
pub fn init_logger() {
|
||||
// Logs patterns
|
||||
let encoder = PatternEncoder::new(LOG_FORMAT);
|
||||
|
||||
pub fn init_logger() -> log4rs::Handle {
|
||||
// Rollings logs trigger
|
||||
let size_triger = SizeTrigger::new(FILE_MAX_SIZE);
|
||||
|
||||
// Rolling logs roller
|
||||
// Rolling logs rollers
|
||||
let logs_roller = FixedWindowRoller::builder()
|
||||
.base(1)
|
||||
.build(LOGS_ARCHIVE_FILE_PATTERN, LOGS_MAX_FILES)
|
||||
.unwrap();
|
||||
let rolling_debug = FixedWindowRoller::builder()
|
||||
.build(DEBUG_ARCHIVE_FILE_PATTERN, DEBUG_MAX_FILES)
|
||||
.unwrap();
|
||||
|
||||
// Rolling logs policy
|
||||
// Rolling logs policies
|
||||
let rolling_logs_policy = CompoundPolicy::new(Box::new(size_triger), Box::new(logs_roller));
|
||||
let rolling_debug_policy = CompoundPolicy::new(Box::new(size_triger), Box::new(rolling_debug));
|
||||
|
||||
// Appenders
|
||||
let stdout = ConsoleAppender::builder()
|
||||
.encoder(Box::new(encoder.clone()))
|
||||
.encoder(Box::new(PatternEncoder::new(LOG_FORMAT)))
|
||||
.build();
|
||||
let rolling_logs = RollingFileAppender::builder()
|
||||
.encoder(Box::new(encoder.clone()))
|
||||
.encoder(Box::new(PatternEncoder::new(LOG_FORMAT)))
|
||||
.build(LOGS_FILE, Box::new(rolling_logs_policy))
|
||||
.unwrap();
|
||||
let rolling_debug = RollingFileAppender::builder()
|
||||
.encoder(Box::new(encoder))
|
||||
.build(DEBUG_FILE, Box::new(rolling_debug_policy))
|
||||
.unwrap();
|
||||
|
||||
let config = Config::builder()
|
||||
.appender(Appender::builder().build("stdout", Box::new(stdout)))
|
||||
.appender(Appender::builder().build("rolling_logs", Box::new(rolling_logs)))
|
||||
.appender(Appender::builder().build("rolling_debug", Box::new(rolling_debug)))
|
||||
// Don't print the serenity crate logs
|
||||
.logger(Logger::builder().build("serenity", log::LevelFilter::Error))
|
||||
.logger(Logger::builder().build("serenity", LevelFilter::Error))
|
||||
// Don't print the tracing crate logs
|
||||
.logger(Logger::builder().build("tracing", log::LevelFilter::Error))
|
||||
.logger(
|
||||
Logger::builder()
|
||||
.appender("rolling_logs")
|
||||
.build("logs", log::LevelFilter::Info),
|
||||
)
|
||||
.logger(
|
||||
Logger::builder()
|
||||
.appender("rolling_debug")
|
||||
.build("bot_debug", log::LevelFilter::Debug),
|
||||
)
|
||||
.logger(Logger::builder().build("tracing", LevelFilter::Error))
|
||||
.build(
|
||||
Root::builder()
|
||||
.appender("stdout")
|
||||
.build(log::LevelFilter::Info),
|
||||
.appender("rolling_logs")
|
||||
.build(LevelFilter::Info),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
log4rs::init_config(config).unwrap();
|
||||
log4rs::init_config(config).unwrap()
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ use logs::init_logger;
|
|||
#[tokio::main]
|
||||
async fn main() {
|
||||
// Start the logger
|
||||
init_logger();
|
||||
let _handle = init_logger();
|
||||
|
||||
let mut client = Client::new().await;
|
||||
|
||||
|
|
Loading…
Reference in a new issue