feat: v1.0.3, add log4rs
This commit is contained in:
66
src/serve_log.rs
Normal file
66
src/serve_log.rs
Normal file
@@ -0,0 +1,66 @@
|
||||
use log::LevelFilter;
|
||||
use rust_util::{simple_error, XResult};
|
||||
use std::{env, fs};
|
||||
|
||||
const DEFAULT_LOG4RS_CONFIG: &str = r##"refresh_rate: 10 seconds
|
||||
appenders:
|
||||
file:
|
||||
kind: rolling_file
|
||||
path: "log/local_mini_kms_log.log"
|
||||
append: true
|
||||
encoder:
|
||||
pattern: "{d} - {m}{n}"
|
||||
policy:
|
||||
kind: compound
|
||||
trigger:
|
||||
kind: size
|
||||
limit: 100 mb
|
||||
roller:
|
||||
kind: fixed_window
|
||||
pattern: log/local_mini_kms_log.{}.log
|
||||
count: 10
|
||||
root:
|
||||
level: info
|
||||
appenders:
|
||||
- file"##;
|
||||
|
||||
pub fn init_logger(log_level: Option<&str>, log4rs_file: Option<&str>) -> XResult<()> {
|
||||
match log4rs_file {
|
||||
None => {
|
||||
let level = match env::var("LOGGER").ok().as_deref().map(get_log_level_filter) {
|
||||
Some(Ok(level)) => level,
|
||||
_ => log_level.map(get_log_level_filter).unwrap_or(Ok(LevelFilter::Debug))?,
|
||||
};
|
||||
let _ = env_logger::builder().filter_level(level).try_init();
|
||||
}
|
||||
Some(log4rs_file) => {
|
||||
let log4rs_config_file = if log4rs_file == "#DEFAULT" {
|
||||
let default_log4rs_file = "default_log4rs.yaml";
|
||||
let _ = fs::metadata(default_log4rs_file).map_err(|_| {
|
||||
fs::write(default_log4rs_file, DEFAULT_LOG4RS_CONFIG).map_err(|e| {
|
||||
println!("Write file: {} failed: {}", default_log4rs_file, e);
|
||||
})
|
||||
});
|
||||
default_log4rs_file
|
||||
} else {
|
||||
log4rs_file
|
||||
};
|
||||
log4rs::init_file(log4rs_config_file, Default::default())?;
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
fn get_log_level_filter(log_level: &str) -> XResult<LevelFilter> {
|
||||
Ok(match log_level {
|
||||
"trace" => LevelFilter::Trace,
|
||||
"debug" => LevelFilter::Debug,
|
||||
"info" => LevelFilter::Info,
|
||||
"warn" => LevelFilter::Warn,
|
||||
"error" => LevelFilter::Error,
|
||||
_ => {
|
||||
return simple_error!("invalid log_level");
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user