diff --git a/crates/oxide_kernel/src/kernel/core.rs b/crates/oxide_kernel/src/kernel/core.rs index 8aa0c7cb..9ee05d02 100644 --- a/crates/oxide_kernel/src/kernel/core.rs +++ b/crates/oxide_kernel/src/kernel/core.rs @@ -3,6 +3,7 @@ //! 重建信号。 use std::num::NonZeroUsize; +use std::path::PathBuf; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::Arc; @@ -34,8 +35,13 @@ pub struct KernelCore { impl KernelCore { /// 按配置创建共享核心:初始化日志系统与四个共享 forge(interner/shape/code/prop)。 pub fn new(config: KernelConfig) -> Arc { + // OXIDE_LOG_FILE 指向目录时日志按日滚动落盘该目录(同镜像 stderr),缺省仅 stderr。 + let output = match std::env::var("OXIDE_LOG_FILE") { + Ok(dir) if !dir.is_empty() => oxide_log::Output::File(PathBuf::from(dir)), + _ => oxide_log::Output::Stderr, + }; oxide_log::init(&oxide_log::LogConfig { - output: oxide_log::Output::Stderr, + output, levels: config.log_levels, }); let perm_interner = Arc::new(PermInterner::new()); diff --git a/crates/oxide_test262/src/main.rs b/crates/oxide_test262/src/main.rs index 21e0e4d6..e51ec9bc 100644 --- a/crates/oxide_test262/src/main.rs +++ b/crates/oxide_test262/src/main.rs @@ -95,8 +95,13 @@ fn run_tests() -> bool { } } eprintln!("[LOG] level={log_level:?}"); + // OXIDE_LOG_FILE 指向目录时日志按日滚动落盘该目录(同镜像 stderr),缺省仅 stderr。 + let output = match std::env::var("OXIDE_LOG_FILE") { + Ok(dir) if !dir.is_empty() => Output::File(PathBuf::from(dir)), + _ => Output::Stderr, + }; oxide_log::init(&LogConfig { - output: Output::Stderr, + output, levels: [log_level; SUBSYSTEM_COUNT], });