file_and_stdout_generic/
generic.rs

1use std::{path::PathBuf, thread};
2
3use rslogger::Logger;
4use log::{info, warn, error};
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        .add_writer_file(PathBuf::from("./LOGS/genercs_1.log"), true, Some(10))
13        .add_writer_file(PathBuf::from("./LOGS/genercs_2.log"), true, Some(10000))
14        .add_writer_file(PathBuf::from("./LOGS/genercs_3.log"), true, None)
15        .init().unwrap();
16
17    info!("This is a info test");
18    warn!("This is a warn test");
19    error!("This is an error test");
20
21    let handler1 = thread::Builder::new().name("Thread 1".to_string()).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().name("Thread 2".to_string()).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
35    handler1.join().unwrap();
36    handler2.join().unwrap();
37
38    // Note: This method must be called only at the end of the program. After that, you can no longer log.
39    log::logger().flush();
40
41    // This would panic
42    // info!("Test");
43}