任何人都知道一个工具来检测和报告日志文件中的重复模式?

我需要从Java应用程序(log4j)监视一些大型嘈杂的日志文件(500米/天)。 现在我手动查看文件,grep为“错误”等。 但是,应该可以使用工具来查看文件中的重复模式,对它们进行计数并为每个条目的详细信息提供细化。 任何人都知道这样的工具? 一个文本或基于Web的用户界面将是很好的。

我听说过人们在日志文件上应用贝叶斯过滤来发现有趣的东西,而不是日常的日志条目。 他们使用垃圾邮件filter,其中常规无趣的条目被认为是“好”,而不寻常的条目被认为是“垃圾邮件”,并使用他们能够转移的着色。

这听起来很像机器学习的东西,但我再也没有看到它的行动,只听说过啤酒。

Splunk为这种东西创造奇迹。 我在内部使用它来收集所有日志,并通过其优秀的基于浏览器的界面进行快速search。

syslog-ng有一个名为patterndb的function。 您可以创build模式并实时将日志条目与其匹配,然后将这些条目发送到单独的日志文件。

在研究syslog-ng和patterndb(上面的答案+1)时,我遇到了一个名为ELSA的基于Web的工具: http : //code.google.com/p/enterprise-log-search-and-archive/ 。 这是perl中的F / OSS,带有一个web界面,应该是非常快的。

我还没有尝试过,但一旦我完成使用patterndb过滤,我会尝试艾尔莎。

试试小的 。
我不确定它是否可以使用log4j格式,但是您可能可以为此编写一个自定义filter。
Petit没有Web界面,它在你的shell中显示graphics(ASCII art ftw!)。
快速查看重复的消息并找出它们何时发生或开始更频繁发生是非常有用的。

如果你在你的服务器上使用debian / squeeze,看看log2mail: http ://packages.debian.org/squeeze/log2mail

Glogg是一个非常好的日志资源pipe理器,因为您可以在string和颜色行上创buildfilter,或者将所有匹配项都检索到string。

http://glogg.bonnefon.org/

Splunk通常是一个很好的解决scheme。 但是你提到它对你来说太贵了。 所以我build议你看看Logstash或GrayLog 。

您可以尝试使用SEQREL的LogXtender,它可以自动检测模式并汇总类似的日志。 这种方式是通过dynamic创build正则expression式并使用caching的正则expression式来匹配其他日志。 通过额外的分类检测,可以添加更多的粒度。 免费版本可以在https://try.logxtender.net下载。