Files
OxideJS-New/crates/oxide_log/src/level.rs
T
2026-08-05 21:46:47 +08:00

38 lines
1.3 KiB
Rust

//! 日志级别定义。
//!
//! [`Level`] 是引擎内部使用的日志级别枚举,与 `tracing` 的级别一一对应,
//! 通过 [`Level::as_tracing_level`] 转换。值以 `u8` 存储(`repr(u8)`),
//! 可直接写入 `SubsystemFilter` 的原子级别槽位。
/// 日志级别。
///
/// 由低到高:`Off` < `Error` < `Warn` < `Info` < `Debug` < `Trace`。
/// `Off` 表示完全关闭,仅由 `SubsystemFilter` 判读,不映射到 `tracing` 级别。
#[repr(u8)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub enum Level {
Off = 0,
Error = 1,
Warn = 2,
Info = 3,
Debug = 4,
Trace = 5,
}
impl Level {
/// 转换为 `tracing` 的 [`tracing::Level`]。
///
/// `Off` 与 `Error` 都映射到 `ERROR`——关闭语义由
/// [`SubsystemFilter`](crate::SubsystemFilter) 的 `Off` 分支单独处理,
/// 这里仅保证其余级别 1:1 对齐。
pub const fn as_tracing_level(self) -> tracing::Level {
match self {
Level::Off | Level::Error => tracing::Level::ERROR,
Level::Warn => tracing::Level::WARN,
Level::Info => tracing::Level::INFO,
Level::Debug => tracing::Level::DEBUG,
Level::Trace => tracing::Level::TRACE,
}
}
}