multi_dest/
multi-dest.rs

1use ftlog::{
2    appender::{file::Period, ChainAppenders, FileAppender},
3    info, LoggerGuard,
4};
5use log::LevelFilter;
6use time::Duration;
7
8fn init() -> LoggerGuard {
9    // Rotate every day, clean stale logs that were modified 7 days ago on each rotation
10    let writer = FileAppender::builder()
11        .path("./current.log")
12        .rotate(Period::Minute)
13        .expire(Duration::minutes(2))
14        .build();
15    ftlog::Builder::new()
16        // global max log level
17        .max_log_level(LevelFilter::Info)
18        // define root appender, pass None would write to stderr
19        .root(ChainAppenders::new(vec![
20            Box::new(writer),
21            Box::new(std::io::stdout()),
22        ]))
23        // write logs in ftlog::appender to "./ftlog-appender.log" instead of "./current.log"
24        .filter("ftlog::appender", "ftlog-appender", LevelFilter::Error)
25        .appender("ftlog-appender", FileAppender::new("ftlog-appender.log"))
26        .try_init()
27        .expect("logger build or set failed")
28}
29
30fn main() {
31    let _guard = init();
32    info!("Hello, world!");
33    for i in 0..300 {
34        info!("running {}!", i);
35        info!(limit=3000i64; "limit running{} !", i);
36        std::thread::sleep(std::time::Duration::from_secs(1));
37    }
38}