is_record_start_line

Function is_record_start_line 

Source
pub fn is_record_start_line(line: &str) -> bool
Expand description

判断一行日志是否为记录起始行

这是一个高性能的验证函数,用于快速判断一行文本是否为有效的日志记录起始行。

§判断标准

  1. 行首 23 字节符合时间戳格式 YYYY-MM-DD HH:mm:ss.SSS
  2. 时间戳后紧跟一个空格,然后是 meta 部分
  3. Meta 部分用小括号包含
  4. Meta 部分必须包含所有必需字段(client_ip 可选)
  5. Meta 字段间以一个空格分隔
  6. Meta 字段顺序固定:ep → sess → thrd_id → username → trxid → statement → appname → client_ip(可选)

§参数

  • line - 要检查的行

§返回

如果是有效的记录起始行返回 true,否则返回 false

§示例

use dm_database_parser_sqllog::tools::is_record_start_line;

let valid = "2025-08-12 10:57:09.548 (EP[0] sess:123 thrd:456 user:alice trxid:789 stmt:999 appname:app) SELECT 1";
assert!(is_record_start_line(valid));

let invalid = "This is not a log line";
assert!(!is_record_start_line(invalid));
  1. meta 部分结束后紧跟一个空格,然后是 body 部分。