1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
use log::{debug, error, info, LevelFilter, SetLoggerError, trace, warn};
use log4rs::{
append::{
console::{ConsoleAppender, Target},
file::FileAppender,
},
config::{Appender, Config, Root},
encode::pattern::PatternEncoder,
filter::threshold::ThresholdFilter,
};
pub fn init_log_config() -> Result<(), SetLoggerError> {
let level = log::LevelFilter::Debug;
let file_path = "d:/tmp/foo.log";
let stderr = ConsoleAppender::builder().encoder(
Box::new(PatternEncoder::new("[{d(%Y-%m-%d %H:%M:%S)} {T} {h({l})} {M}/{f}:{L}] - {m}\n"))
).target(Target::Stderr).build();
let logfile = FileAppender::builder()
.encoder(Box::new(PatternEncoder::new("[{d(%Y-%m-%d %H:%M:%S)} {T} {h({l})} {M}/{f}:{L}] - {m}\n")))
.build(file_path)
.unwrap();
let config = Config::builder()
.appender(Appender::builder().build("logfile", Box::new(logfile)))
.appender(
Appender::builder()
.filter(Box::new(ThresholdFilter::new(level)))
.build("stderr", Box::new(stderr)),
)
.build(
Root::builder()
.appender("logfile")
.appender("stderr")
.build(LevelFilter::Trace),
)
.unwrap();
let _handle = log4rs::init_config(config)?;
Ok(())
}