use snafu::Snafu;
use tracing::error;
use tracing_subscriber::EnvFilter;
use tracing_subscriber::filter::Directive;
mod access;
mod async_logger;
mod file_appender;
#[cfg(unix)]
mod syslog;
mod writer;
const LOG_TARGET: &str = "pingap::logger";
#[derive(Debug, Snafu)]
pub enum Error {
#[snafu(display("IO error {source}"))]
Io { source: std::io::Error },
#[snafu(display("Invalid {message}"))]
Invalid { message: String },
}
pub fn new_env_filter(level: &str) -> EnvFilter {
let mut initial_filter = EnvFilter::from_default_env();
for item in level.split(",") {
match item.parse::<Directive>() {
Ok(directive) => {
initial_filter = initial_filter.add_directive(directive);
},
Err(e) => {
error!(
target: LOG_TARGET,
error = e.to_string(),
"parse directive fail"
);
},
};
}
initial_filter
}
pub use access::*;
pub use async_logger::*;
pub use writer::*;