BotDiscord/src/tracing/level.rs

62 lines
1.9 KiB
Rust

use serde_repr::{Deserialize_repr, Serialize_repr};
use std::fmt::{Debug, Display};
use tracing::Level;
#[derive(Serialize_repr, Deserialize_repr, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
#[repr(u8)]
pub enum VerboseLevel {
ERROR = 4,
WARN = 3,
INFO = 2,
DEBUG = 1,
TRACE = 0,
}
impl From<VerboseLevel> for Level {
fn from(level: VerboseLevel) -> Self {
match level {
VerboseLevel::ERROR => Level::ERROR,
VerboseLevel::WARN => Level::WARN,
VerboseLevel::INFO => Level::INFO,
VerboseLevel::DEBUG => Level::DEBUG,
VerboseLevel::TRACE => Level::TRACE,
}
}
}
impl From<VerboseLevel> for tracing_subscriber::filter::LevelFilter {
fn from(level: VerboseLevel) -> Self {
match level {
VerboseLevel::ERROR => tracing_subscriber::filter::LevelFilter::ERROR,
VerboseLevel::WARN => tracing_subscriber::filter::LevelFilter::WARN,
VerboseLevel::INFO => tracing_subscriber::filter::LevelFilter::INFO,
VerboseLevel::DEBUG => tracing_subscriber::filter::LevelFilter::DEBUG,
VerboseLevel::TRACE => tracing_subscriber::filter::LevelFilter::TRACE,
}
}
}
impl Debug for VerboseLevel {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::ERROR => write!(f, "ERROR"),
Self::WARN => write!(f, "WARN"),
Self::INFO => write!(f, "INFO"),
Self::DEBUG => write!(f, "DEBUG"),
Self::TRACE => write!(f, "TRACE"),
}
}
}
impl Display for VerboseLevel {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::ERROR => write!(f, "ERROR"),
Self::WARN => write!(f, "WARN"),
Self::INFO => write!(f, "INFO"),
Self::DEBUG => write!(f, "DEBUG"),
Self::TRACE => write!(f, "TRACE"),
}
}
}