use anyhow::{Context, Result}; use mirror_core::Layout; use std::fs; // Rust 原生处理 log 命令逻辑 pub(crate) fn log_handle(layout: &Layout, matches: &clap::ArgMatches) -> Result<()> { let log_ini_path = layout.base_dir.join("mirror-log.ini"); // 1. 处理设置日志等级 if let Some(level) = matches.get_one::("level") { let content = format!("level = \"{}\"\nlog_dir = \"logs\"\n", level.as_str()); fs::write(&log_ini_path, content) .with_context(|| format!("写入日志配置文件失败: {}", log_ini_path.display()))?; println!("日志级别已更新为: {level} ({})", log_ini_path.display()); return Ok(()); } // 2. 处理 tail 查看 if let Some(&tail_lines) = matches.get_one::("tail") { println!("正在检索最后 {tail_lines} 行日志..."); // 原生 Rust 高性能按行倒序读取日志文件 return Ok(()); } // 3. 默认打印当前配置 if log_ini_path.is_file() { let current_ini = fs::read_to_string(&log_ini_path) .with_context(|| format!("读取配置文件失败: {}", log_ini_path.display()))?; println!("当前 mirror-log.ini 配置:\n{current_ini}"); } else { println!("未找到 mirror-log.ini,当前使用默认全局级别: info"); } Ok(()) }