67 lines
1.7 KiB
Rust
67 lines
1.7 KiB
Rust
use log::{debug, error, info, warn, LevelFilter};
|
|
use simplelog::*;
|
|
use std::fs::{create_dir_all, File, OpenOptions};
|
|
use std::path::Path;
|
|
|
|
const MAX_LOG_SIZE: u64 = 50 * 1024 * 1024;
|
|
const LOG_FILE_PATH: &str = "data/rust.log";
|
|
|
|
pub fn init_logger() {
|
|
let mut builder = ConfigBuilder::new();
|
|
builder.set_time_offset_to_local().unwrap();
|
|
let config = builder.build();
|
|
|
|
// 获取文件的目录路径
|
|
let dir = Path::new(LOG_FILE_PATH).parent().unwrap();
|
|
|
|
// 检查并创建目录
|
|
if !dir.exists() {
|
|
create_dir_all(dir).unwrap();
|
|
}
|
|
|
|
let file = OpenOptions::new()
|
|
.write(true)
|
|
.append(true)
|
|
.create(true)
|
|
.open(LOG_FILE_PATH).unwrap();
|
|
|
|
CombinedLogger::init(
|
|
vec![
|
|
TermLogger::new(LevelFilter::Info, config.clone(), TerminalMode::Mixed, ColorChoice::Auto),
|
|
WriteLogger::new(LevelFilter::Info, config.clone(), file),
|
|
]
|
|
).unwrap();
|
|
}
|
|
|
|
// 检查文件大小并清空文件(如果超出限制)
|
|
fn check_and_clear_log_file() {
|
|
let metadata = std::fs::metadata(LOG_FILE_PATH).unwrap();
|
|
if metadata.len() > MAX_LOG_SIZE {
|
|
// 清空文件
|
|
File::create(LOG_FILE_PATH).expect(&format!("Can't re-create file {}", LOG_FILE_PATH));
|
|
}
|
|
}
|
|
|
|
#[allow(dead_code)]
|
|
pub fn debug(message: &str) {
|
|
check_and_clear_log_file();
|
|
debug!("{}", message);
|
|
}
|
|
|
|
#[allow(dead_code)]
|
|
pub fn info(message: &str) {
|
|
check_and_clear_log_file();
|
|
info!("{}", message);
|
|
}
|
|
|
|
#[allow(dead_code)]
|
|
pub fn warn(message: &str) {
|
|
check_and_clear_log_file();
|
|
warn!("{}", message);
|
|
}
|
|
|
|
#[allow(dead_code)]
|
|
pub fn error(message: &str) {
|
|
check_and_clear_log_file();
|
|
error!("{}", message);
|
|
} |