file_and_stdout_different_levels/
different-levels.rs

1use std::{path::PathBuf, thread};
2
3use rslogger::Logger;
4use log::{info, warn, error, trace};
5
6fn main() {
7    Logger::new()
8        .with_level(log::LevelFilter::Trace)
9        .with_local_timestamps()
10        .with_thread()
11        .add_writer_stdout(true, Some(1000))
12        // This will trace only error or less
13        .add_writer_file_with_level(PathBuf::from("./LOGS/genercs_1.log"), true, Some(10), log::LevelFilter::Error)
14        // This will trace only info or less
15        .add_writer_file_with_level(PathBuf::from("./LOGS/genercs_2.log"), true, Some(10000), log::LevelFilter::Info)
16        // This will trace only trace or less (default)
17        .add_writer_file(PathBuf::from("./LOGS/genercs_3.log"), true, None)
18        .add_writer_stdout(false, None)
19        .init().unwrap();
20
21    let handler1 = thread::Builder::new().spawn(move | | {
22        for i in 0..10 {
23            info!("This is a info, i: {i}");
24        }
25    }).unwrap();
26
27    let handler2 = thread::Builder::new().spawn(move | | {
28        for i in 0..10 {
29            info!("This is a info, i: {i}");
30        }
31    }).unwrap();
32    
33    warn!("Warning on main!");
34    error!("This is traced on genercs_1.log");
35    info!("This is traced on genercs_2.log but not on genercs_1.log");
36    trace!("This is traced on genercs_3.log but not on genercs_1/2.log");
37
38    handler1.join().unwrap();
39    handler2.join().unwrap();
40
41    log::logger().flush();
42}