pub fn parse_record(lines: &[&str]) -> Result<Sqllog, ParseError>Expand description
从行数组解析成 Sqllog 结构
这是主要的解析函数,将一行或多行文本解析为结构化的 Sqllog 对象。
§参数
lines- 包含日志记录的行(第一行必须是有效的起始行,后续行是继续行)
§返回
Ok(Sqllog)- 解析成功Err(ParseError)- 解析失败,包含详细的错误信息
§错误
可能返回以下错误:
EmptyInput- 输入为空InvalidRecordStartLine- 第一行不是有效的记录起始行LineTooShort- 行长度不足MissingClosingParen- 缺少右括号InsufficientMetaFields- Meta 字段数量不足
§示例
use dm_database_parser_sqllog::parse_record;
let lines = vec!["2025-08-12 10:57:09.548 (EP[0] sess:123 thrd:456 user:alice trxid:789 stmt:999 appname:app) SELECT 1"];
let sqllog = parse_record(&lines).unwrap();
assert_eq!(sqllog.ts, "2025-08-12 10:57:09.548");
assert_eq!(sqllog.meta.username, "alice");
assert_eq!(sqllog.body, "SELECT 1");