fn calculate_formatted_length(entry: &LogEntry) -> usizeExpand description
计算日志条目格式化后的精确字节长度
格式: “{color_code}{level} [{timestamp:12}] [CPU{cpu_id}/T{task_id:3}] {message}{reset}\n”
重要: 此函数的计算逻辑必须与以下格式化函数保持一致:
log_core::direct_print_entry- 控制台输出格式log_core::format_log_entry- syslog 系统调用格式
如果修改了日志输出格式,需要同步更新三处:
log_core::direct_print_entry- 实际格式化输出log_core::format_log_entry- 字符串格式化calculate_formatted_length(此函数) - 字节长度计算
§组成部分计算
- ANSI 颜色代码: entry.level().color_code().len() (开始)
- ANSI 重置代码: entry.level().reset_color_code().len() (结束)
- 级别标签: entry.level().as_str().len() (例如 “\[INFO\]”)
- 时间戳: 14 字节 (“ [“ + 12位数字 + “]”)
- CPU ID: “ [CPU“ + digit_count(cpu_id)
- 任务 ID: “/T” + digit_count_padded(task_id, 3) + “]”
- 消息内容: entry.message().len()
- 空格分隔: 3 字节 (level后1个, timestamp后1个, context后1个)
- 换行: 1 字节