use std::fs::OpenOptions;
use std::io::Write;
pub fn init() -> Result<(), Box<dyn std::error::Error>> {
let log_file = OpenOptions::new()
.create(true)
.append(true)
.open("app.log")?;
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
.format(|buf, record| {
use std::time::SystemTime;
let now = SystemTime::now()
.duration_since(SystemTime::UNIX_EPOCH)
.unwrap();
let secs = now.as_secs();
writeln!(
buf,
"[{}] {} - {}",
format_timestamp(secs),
record.level(),
record.args()
)
})
.target(env_logger::Target::Pipe(Box::new(log_file)))
.init();
Ok(())
}
pub fn init_with_path(path: &str) -> Result<(), Box<dyn std::error::Error>> {
let log_file = OpenOptions::new().create(true).append(true).open(path)?;
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
.format(|buf, record| {
use std::time::SystemTime;
let now = SystemTime::now()
.duration_since(SystemTime::UNIX_EPOCH)
.unwrap();
let secs = now.as_secs();
writeln!(
buf,
"[{}] {} - {}",
format_timestamp(secs),
record.level(),
record.args()
)
})
.target(env_logger::Target::Pipe(Box::new(log_file)))
.init();
Ok(())
}
fn format_timestamp(secs: u64) -> String {
format!("timestamp:{}", secs)
}