Skip to main content

main/
main.rs

1//! Initializes the logger, logs at every level, then shows the error from a
2//! second initialization.
3
4use caesium::{ColorChoice, LevelFilter, LoggerBuilder, debug, error, info, trace, warn};
5
6fn main() {
7    let builder = LoggerBuilder::new()
8        .level(LevelFilter::Debug)
9        .color(ColorChoice::Auto);
10
11    builder.init().expect("logger init failed");
12
13    info!("Logger initialized successfully!");
14    debug!("This is a debug message");
15    trace!("This is a trace message");
16    warn!("This is a warning message");
17    error!("This is an error message");
18
19    // Simulate some work to demonstrate elapsed time tracking
20    std::thread::sleep(std::time::Duration::from_millis(150));
21    info!("After a short delay");
22
23    std::thread::sleep(std::time::Duration::from_millis(250));
24    warn!("Another warning after more time has passed");
25
26    // Calling init again fails: a global logger is already initialized
27    match builder.init() {
28        Err(e) => println!("Expected init error: {e}"),
29        Ok(()) => unreachable!("init should not succeed a second time"),
30    }
31}