Skip to content

Commit 8c336d8

Browse files
committed
feat (core): 日志根据 level 拆分独立文件
1 parent 27267c6 commit 8c336d8

2 files changed

Lines changed: 41 additions & 16 deletions

File tree

src-tauri/src/logger.rs

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,33 +8,35 @@ use tauri::{AppHandle, Manager};
88
static LOG_DIRECTORY: Mutex<Option<PathBuf>> = Mutex::new(None);
99

1010
pub fn setup_logger(app: &AppHandle) -> Result<(), fern::InitError> {
11-
// 获取日志目录(可能是自定义的,也可能是默认的)
11+
// 获取日志目录
1212
let log_dir = get_effective_log_directory(app);
1313

1414
// 创建日志目录
1515
if let Err(e) = fs::create_dir_all(&log_dir) {
1616
eprintln!("Failed to create log directory: {}", e);
17-
// 如果自定义目录创建失败,回退到默认目录
1817
let default_dir = get_default_log_directory(app);
1918
fs::create_dir_all(&default_dir).expect("Failed to create default log directory");
2019

21-
// 更新为默认目录
2220
{
2321
let mut guard = LOG_DIRECTORY.lock().unwrap();
24-
*guard = None; // 清除自定义设置
22+
*guard = None;
2523
}
2624

2725
warn!("日志目录创建失败,使用默认目录: {:?}", default_dir);
28-
} else {
29-
info!("日志目录: {:?}", log_dir);
3026
}
3127

3228
// 生成当天的日志文件名
3329
let today = Local::now().format("%Y-%m-%d").to_string();
34-
let log_file = log_dir.join(format!("codeforge-{}.log", today));
3530

36-
// 配置日志
37-
fern::Dispatch::new()
31+
// 不同级别的日志文件
32+
let all_log_file = log_dir.join(format!("codeforge-{}.log", today));
33+
let error_log_file = log_dir.join(format!("codeforge-error-{}.log", today));
34+
let warn_log_file = log_dir.join(format!("codeforge-warn-{}.log", today));
35+
let info_log_file = log_dir.join(format!("codeforge-info-{}.log", today));
36+
let debug_log_file = log_dir.join(format!("codeforge-debug-{}.log", today));
37+
38+
// 基础配置
39+
let base_config = fern::Dispatch::new()
3840
.format(|out, message, record| {
3941
out.finish(format_args!(
4042
"[{}] [{}] [{}:{}] {}",
@@ -45,17 +47,40 @@ pub fn setup_logger(app: &AppHandle) -> Result<(), fern::InitError> {
4547
message
4648
))
4749
})
48-
.level(LevelFilter::Debug) // 设置日志级别
49-
.level_for("hyper", LevelFilter::Warn) // 减少第三方库的日志
50+
.level(LevelFilter::Debug)
51+
.level_for("hyper", LevelFilter::Warn)
5052
.level_for("reqwest", LevelFilter::Warn)
51-
.level_for("tauri", LevelFilter::Info) // Tauri 框架日志
52-
.chain(std::io::stdout()) // 同时输出到控制台
53-
.chain(fern::log_file(&log_file)?) // 输出到文件
53+
.level_for("tauri", LevelFilter::Info);
54+
55+
// 配置不同级别的日志输出
56+
base_config
57+
.chain(std::io::stdout()) // 控制台输出
58+
.chain(fern::log_file(&all_log_file)?) // 所有级别写入总文件
59+
.chain(
60+
fern::Dispatch::new()
61+
.filter(|metadata| metadata.level() == log::Level::Error)
62+
.chain(fern::log_file(&error_log_file)?),
63+
)
64+
.chain(
65+
fern::Dispatch::new()
66+
.filter(|metadata| metadata.level() == log::Level::Warn)
67+
.chain(fern::log_file(&warn_log_file)?),
68+
)
69+
.chain(
70+
fern::Dispatch::new()
71+
.filter(|metadata| metadata.level() == log::Level::Info)
72+
.chain(fern::log_file(&info_log_file)?),
73+
)
74+
.chain(
75+
fern::Dispatch::new()
76+
.filter(|metadata| metadata.level() == log::Level::Debug)
77+
.chain(fern::log_file(&debug_log_file)?),
78+
)
5479
.apply()?;
5580

5681
info!("CodeForge 应用启动");
5782
info!("应用版本: {}", env!("CARGO_PKG_VERSION"));
58-
info!("日志文件: {:?}", log_file);
83+
info!("日志文件目录 {}", log_dir.display());
5984

6085
Ok(())
6186
}

src/components/Settings.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
<!-- 语言配置 -->
1010
<template #language>
11-
<Language/>
11+
<Language v-if="activeTab === 'language'"/>
1212
</template>
1313
</Tabs>
1414
</Modal>

0 commit comments

Comments
 (0)