log4rs-rust
pub use log::{self,*};
use log4rs::{
config::Config,
file::{Deserializers, RawConfig},
Logger,
};
use serde::Deserialize;
pub fn init_log4rs(config: &str) -> Result<log4rs::Handle, failure::Error> {
let log4rs_config: RawConfig = serde_yaml::from_str(config)?;
let (appenders, _) = log4rs_config.appenders_lossy(&Deserializers::default());
let (config, _) = Config::builder()
.appenders(appenders)
.loggers(log4rs_config.loggers())
.build_lossy(log4rs_config.root());
Ok(log4rs::init_config(config)?)
}
refresh_rate: 30 seconds
appenders:
stdout:
kind: console
root:
kind: rolling_file
path: "log/main.log"
encoder:
pattern: "{l} {d(%Y-%m-%d %H:%M:%S)} {T} {M}:{L} - {m}{n}"
policy:
kind: compound
trigger:
kind: size
limit: 5 mb
roller:
kind: delete
root:
level: info
appenders:
- root
- stdout
let config = include_str!("log4rs.yaml");
println!("config {}",config);
let log = util::log::init_log4rs(config).unwrap();