use std::fs::OpenOptions;
use anyhow::Result;
use env_logger::{Builder, Target};
use crate::clap::args::LogFlags;
pub struct Logger;
impl Logger {
pub fn try_init(log: &LogFlags) -> Result<()> {
let mut builder = Builder::new();
match log.level {
Some(level) => {
builder.filter_level(level.into());
}
None => {
builder.parse_default_env();
}
}
if let Some(path) = &log.file {
let file = OpenOptions::new().create(true).append(true).open(path)?;
builder.target(Target::Pipe(Box::new(file)));
}
builder.try_init()?;
Ok(())
}
}