在浏览日志文件时,我经常会一次又一次地看到相同的错误消息。当然,由于时间戳,用户名,IP地址等原因,两行永远不会相同。
我正在寻找一种设置“百分比差异”的方法,并忽略任何与已报告的错误消息90%相似的行。另一个想法是总是忽略时间戳差异。
步骤:
*编辑:对不起,如果我第一次不清楚。如果需要,我会很乐意解释更多。
感谢。
答案 0 :(得分:3)
我不知道任何完整的开箱即用解决方案,但Text::Levenshtein和类似的算法可以帮助您想出一个通用字符串与另一个类似的方法。
答案 1 :(得分:2)
另一个想法是使用时间戳缓存日志消息,因此您不要重复上次,例如分钟中看到的消息。
my %msg_cache = ();
sub log_filter {
my $msg = shift;
if (defined($msg_cache{$msg}) && $msg_cache{$msg} < time-60) {
# we've logged this message in the last minute - skip
return;
}
$msg_cache{$msg} = time;
return 1;
}