Skip to main content

core_concepts/
core_concepts.rs

1//! Code backing the "Core concepts" documentation chapter.
2
3use std::{error::Error, sync::Arc};
4
5use insomnilog::{
6    BackendOptions, ConsoleSink, LogLevel, PatternFormatter, create_logger, log_info,
7    register_sink, start,
8};
9
10fn main() -> Result<(), Box<dyn Error>> {
11    // ANCHOR: backend
12    let _guard = start(BackendOptions::default())?;
13    // ANCHOR_END: backend
14
15    // ANCHOR: sink
16    let sink: Arc<dyn insomnilog::Sink> = Arc::new(ConsoleSink::new(
17        PatternFormatter::default(),
18        LogLevel::Trace,
19    ));
20    register_sink("console", Arc::clone(&sink))?;
21    // ANCHOR_END: sink
22
23    // ANCHOR: logger
24    let logger = create_logger("app", vec![Arc::clone(&sink)], LogLevel::Info)?;
25
26    log_info!(logger, "server started on port {}", 8080_u16);
27    // ANCHOR_END: logger
28
29    Ok(())
30}