log = “0.4.25”
env_logger = “0.11.6”
use env_logger; use log::{error, warn, info, debug}; use std::env; fn main() { env::set_var("RUST_LOG", "info"); env_logger::init(); debug!("debugです"); info!("infoです"); warn!("warnです"); error!("errorです"); }
[2025-02-14T07:29:59Z INFO app] infoです
[2025-02-14T07:29:59Z WARN app] warnです
[2025-02-14T07:29:59Z ERROR app] errorです
上記でも良いんだけど、log、env_logger使わずに、普通にchronoとFileだけで良い気がする。
use std::path::Path; use chrono::{Utc, DateTime}; use std::fs::File; use std::fs::OpenOptions; use std::io::Write; fn main() { log_output("this is test".to_string()); } fn log_output(message: String) { let utc_datetime: DateTime<Utc> = Utc::now(); let t: String = utc_datetime.to_string(); let filename = format!("./log/{}.txt",&t[0..7]); let log_message = format!("[{}] {}", &t[0..19], message); println!("{}", log_message); if !Path::new(&filename).is_file() { let _ = File::create(&filename); } let mut file_ref = OpenOptions::new() .append(true) .open(filename) .expect("Unable to open file"); file_ref.write_all(&log_message.as_bytes()).expect("write failed"); file_ref.write_all(b"\n").expect("write failed"); }
Compiling app v0.1.0 (/home/vagrant/dev/rust/app)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.54s
Running `target/debug/app`
[2025-02-14 07:58:05] this is test