use postfix_log_parser::MasterParser;
fn main() {
let parser = MasterParser::new();
println!("=== 测试新时间格式支持 ===\n");
let test_logs = vec![
"2025 Jun 16 11:06:14.897961 m01 postfix/qmgr[84]: 4bLFJP5hXGz1DGbl: removed",
"2025 Jun 16 11:06:14.897961 m01 postfix/cleanup[123]: 4bH9jF46N6zdgMn: hold: header X-Decision-Result: Quarantine from localhost[127.0.0.1]:34924; from=<jcb-kuHwuN9mn@loylr.com> to=<m01@zcloud.center> proto=SMTP helo=<localhost>: Mail quarantined for review",
"2025 Jun 16 11:06:14.123456 mail01 postfix/smtpd[12345]: connect from client[192.168.1.100]",
"Jun 16 11:06:14 m01 postfix/qmgr[84]: 4bLFJP5hXGz1DGbl: removed",
"2025 Jun 16 11:06:14 m01 postfix/qmgr[84]: 4bLFJP5hXGz1DGbl: removed",
];
for (i, log) in test_logs.iter().enumerate() {
println!("测试 {}: {}", i + 1, log);
let result = parser.parse(log);
if result.confidence > 0.0 {
if let Some(event) = result.event {
println!("✅ 解析成功 (置信度: {})", result.confidence);
println!(" 时间戳: {}", event.timestamp);
println!(" 组件: {}", event.component);
println!(" 事件类型: {:?}", event.event);
match serde_json::to_string(&event) {
Ok(json) => {
let json_preview = if json.len() > 200 {
format!("{}...", &json[..200])
} else {
json
};
println!(" JSON: {}", json_preview);
},
Err(e) => println!(" JSON序列化失败: {}", e),
}
}
} else {
println!("❌ 解析失败 (置信度: {})", result.confidence);
for error in result.parsing_errors {
println!(" 错误: {}", error);
}
}
println!(); }
println!("=== 测试完成 ===");
}