format_log_entry

Function format_log_entry 

Source
pub fn format_log_entry(entry: &LogEntry) -> String
Expand description

格式化日志条目为字符串(带 ANSI 颜色和上下文信息)

将 LogEntry 格式化为用户可读的字符串,用于 syslog 系统调用等场景。 包含 ANSI 颜色代码、时间戳、CPU ID、任务 ID 等上下文信息。

注意:此函数使用堆分配(alloc::format!),仅在堆分配器初始化后可用。 主要用于 syslog 系统调用等运行时场景。早期启动时的控制台输出使用 direct_print_entry 方法,该方法不依赖堆分配。

重要:此函数的格式化逻辑必须与 direct_print_entrybuffer::calculate_formatted_length 保持一致。 如果修改了日志输出格式,需要同步更新三处:

  • direct_print_entry - 用于早期启动的控制台输出(无堆分配)
  • format_log_entry (此函数) - 用于 syslog 系统调用(使用堆分配)
  • buffer::calculate_formatted_length - 用于精确字节计数

§格式

<color_code>[LEVEL] [timestamp] [CPU<id>/T<tid>] message<reset>

§示例

\x1b[37m[INFO] [      123456] [CPU0/T  1] Kernel initialized\x1b[0m
\x1b[31m[ERR] [      789012] [CPU0/T  5] Failed to mount /dev/sda1\x1b[0m

§参数

  • entry - 要格式化的日志条目

§返回值

格式化后的字符串(包含 ANSI 颜色代码和上下文信息)