use clap::ValueEnum;
use serde::Serialize;
#[cfg(feature = "cli")]
#[derive(Debug, Clone, Copy)]
pub struct LoggingConfig {
pub level: LogLevel,
pub format: LogFormat,
}
#[cfg(feature = "cli")]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, ValueEnum)]
#[serde(rename_all = "lowercase")]
pub enum LogFormat {
Text,
Json,
}
#[cfg(feature = "cli")]
impl Default for LogFormat {
fn default() -> Self {
Self::Text
}
}
#[cfg(feature = "cli")]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, ValueEnum)]
#[serde(rename_all = "lowercase")]
pub enum LogLevel {
Error,
Warn,
Info,
Debug,
Trace,
}
#[cfg(feature = "cli")]
impl Default for LogLevel {
fn default() -> Self {
Self::Info
}
}
#[cfg(feature = "cli")]
impl LogLevel {
pub fn as_filter(self) -> &'static str {
match self {
Self::Error => "error",
Self::Warn => "warn",
Self::Info => "info",
Self::Debug => "debug",
Self::Trace => "trace",
}
}
}