pub struct LogCore {
buffer: GlobalLogBuffer,
global_level: AtomicU8,
console_level: AtomicU8,
}Expand description
Fields§
§buffer: GlobalLogBuffer用于日志存储的无锁环形缓冲区
global_level: AtomicU8全局日志级别阈值(控制日志是否缓冲)
console_level: AtomicU8控制台输出级别阈值(控制是否立即打印)
Implementations§
Source§impl LogCore
impl LogCore
Sourcepub const fn default() -> Self
pub const fn default() -> Self
使用默认日志级别创建新的 LogCore 实例
这是一个 const fn,可以在编译时进行评估,
从而实现零开销的静态初始化。
使用配置中的默认级别:
- 全局级别: Info (Debug 级别的日志将被过滤)
- 控制台级别: Warning (只打印 Warning 和 Error 级别的日志)
§示例
// 全局单例 (编译时初始化)
static GLOBAL_LOG: LogCore = LogCore::default();Sourcepub fn _log_reader_index(&self) -> usize
pub fn _log_reader_index(&self) -> usize
获取当前可读取的起始索引
Sourcepub fn _log_writer_index(&self) -> usize
pub fn _log_writer_index(&self) -> usize
获取当前写入位置
Sourcepub fn _log_unread_bytes(&self) -> usize
pub fn _log_unread_bytes(&self) -> usize
返回未读日志的总字节数(格式化后)
Sourcepub fn _log_dropped_count(&self) -> usize
pub fn _log_dropped_count(&self) -> usize
返回由于缓冲区溢出而丢弃的日志计数
Sourcepub fn _set_global_level(&self, level: LogLevel)
pub fn _set_global_level(&self, level: LogLevel)
Sourcepub fn _get_global_level(&self) -> LogLevel
pub fn _get_global_level(&self) -> LogLevel
获取当前全局日志级别
Sourcepub fn _set_console_level(&self, level: LogLevel)
pub fn _set_console_level(&self, level: LogLevel)
设置控制台输出级别阈值
只有级别 <= 阈值的日志才会立即打印。
Sourcepub fn _get_console_level(&self) -> LogLevel
pub fn _get_console_level(&self) -> LogLevel
获取当前控制台输出级别
Sourcefn is_level_enabled(&self, level: LogLevel) -> bool
fn is_level_enabled(&self, level: LogLevel) -> bool
检查日志级别是否启用 (全局过滤器)
Sourcefn is_console_level(&self, level: LogLevel) -> bool
fn is_console_level(&self, level: LogLevel) -> bool
检查日志是否应该打印到控制台
Sourcefn direct_print_entry(&self, entry: &LogEntry)
fn direct_print_entry(&self, entry: &LogEntry)
使用 ANSI 颜色直接将日志条目打印到控制台(无堆分配)
此方法在早期启动时即可使用,因为它仅使用栈和 core::fmt::Write, 不依赖堆分配器。
重要: 此函数的格式化逻辑必须与 format_log_entry 和 buffer::calculate_formatted_length 保持一致。
如果修改了日志输出格式,需要同步更新三处:
direct_print_entry(此函数) - 用于早期启动的控制台输出format_log_entry- 用于 syslog 系统调用buffer::calculate_formatted_length- 用于精确字节计数