use tracing_subscriber::EnvFilter;
use tracing_subscriber::fmt;
use tracing_subscriber::prelude::*;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Verbosity {
Quiet,
Normal,
Verbose,
Debug,
Trace,
}
impl Verbosity {
pub fn as_filter(&self) -> &'static str {
match self {
Verbosity::Quiet => "error",
Verbosity::Normal => "warn",
Verbosity::Verbose => "info",
Verbosity::Debug => "debug",
Verbosity::Trace => "trace",
}
}
}
pub fn init(verbosity: Verbosity) {
let filter =
EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new(verbosity.as_filter()));
let subscriber = tracing_subscriber::registry().with(
fmt::layer()
.with_target(false)
.with_level(true)
.with_filter(filter),
);
if tracing::subscriber::set_global_default(subscriber).is_err() {
}
}