discv5_cli/utils/
logging.rs

1use clap::ValueEnum;
2
3/// The log level of the application.
4#[derive(ValueEnum, Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
5pub enum LogLevel {
6    /// Trace level
7    Trace,
8    /// Debug level
9    Debug,
10    /// Info level
11    Info,
12    /// Warn level
13    Warn,
14    /// Error level
15    Error,
16}
17
18impl From<LogLevel> for log::LevelFilter {
19    fn from(level: LogLevel) -> Self {
20        match level {
21            LogLevel::Trace => log::LevelFilter::Trace,
22            LogLevel::Debug => log::LevelFilter::Debug,
23            LogLevel::Info => log::LevelFilter::Info,
24            LogLevel::Warn => log::LevelFilter::Warn,
25            LogLevel::Error => log::LevelFilter::Error,
26        }
27    }
28}
29
30/// Constructs a simple logger with the provided logging level.
31pub fn construct_simple_logger(level: LogLevel) {
32    // let filter = level.map(|f| f.into()).expect("Log level must be present");
33    if simple_logger::SimpleLogger::new()
34        .with_level(level.into())
35        .with_utc_timestamps()
36        .init()
37        .is_err()
38    {
39        log::error!("Failed to initialize logger. Please try again.");
40    }
41}