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