繁体   English   中英

日志文件中的百分比差异

[英]Percent difference in log files

浏览日志文件时,我经常一次又一次遇到相同的错误消息。 当然,由于时间戳,用户名,IP地址等原因,两行永远不会相同。

我正在寻找一种设置“差异百分比”的方法,并忽略任何说与已报告的错误消息90%相似的行。 另一个想法是也总是忽略时间戳差异。

程序:

  1. 用户输入搜索词(正则表达式或简单文本)
  2. 用户输入容差
    [开始]
  3. Grep找到与搜索词匹配的字符串并将其发送到新的文本文件
  4. Grep继续搜索日志,并找到相同的错误消息。 差异可能是时间戳记,日期和用户名。 由于该行与新文件中的行至少相似90%,因此grep不会将其复制过来并继续搜索
  5. Grep查找与搜索词匹配的新行。 该行的相似度小于90%,因此它将被复制到新文件,并成为grep与未来结果匹配的另一行。

*编辑:对不起,如果我第一次不清楚。 如果需要的话,我会很乐意解释。

谢谢。

  • Log.1-DD:MM:YYYY HH:MM:SS:MS错误-用户无法通过IPADDRESS登录
  • Log.1-DD:MM:YYYY HH:MM:SS:MS引导时硬件失败
  • Log.2-DD:MM:YYYY HH:MM:SS:MS资源过薄,警告-检查RAM

我不知道任何完整的即用型解决方案,但Text :: Levenshtein和类似算法可以帮助您弄清楚一个通用字符串与另一个通用字符串的相似之处。

另一个想法是使用时间戳缓存您的日志消息,因此您不会重复过去(例如一分钟)中看到的消息。

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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM