解析log4j日志文件

时间:2010-02-24 15:21:08

标签: file parsing log4j logging

我们有几个使用log4j进行日志记录的应用程序。我需要让log4j解析器工作,这样我们就可以组合多个日志文件并对它们运行自动分析。我不打算重新发明轮子,所以有人能指出我一个体面的预先存在的解析器吗?如果有帮助,我确实有log4j转换模式。

如果没有,我将不得不自己动手。

5 个答案:

答案 0 :(得分:8)

我没有意识到Log4J附带了一个XML appender。

解决方案是:在日志记录配置文件中指定XML appender,将该输出XML文件作为实体包含在格式良好的XML文件中,然后使用您喜欢的技术解析XML。

其他方法有以下限制:

  • Apache Chainsaw - 不够自动化
  • jdbc - 高性能分布式应用程序中的性能不佳

答案 1 :(得分:3)

您可以将OtrosLogViewerbatch processing一起使用。你必须:

  1. 定义您的日志格式,您可以使用Log4j pattern layout parserLog4j XmlLayout
  2. 创建实现LogDataParsedListener的java类。方法public void logDataParsed(LogData data,BatchProcessingContext context)将在每个已解析的日志事件上调用。
  3. 创建jar
  4. 运行OtrosLogViewer并指定日志处理jar,LogDataParsedListener实现和日志文件。

答案 2 :(得分:2)

您要找的是SawMill,或类似

答案 3 :(得分:1)

Log4j日志文件并不适合解析,它们太复杂且非结构化。我相信有第三方工具可以做到(例如Sawmill)。

如果您需要对日志执行自动化的自定义分析,则应考虑记录到数据库并对其进行分析。 JDBC附带JdbcAppender,它将所有消息附加到您选择的数据库中,但它具有性能影响,并且有点不稳定。但是,在interweb上还有其他类似的替代方案(如this one)。

答案 4 :(得分:0)

你可以使用Log4j的Chainsaw V2来处理各种日志文件并将它们收集到一个表中,然后将这些事件输出为xml或使用Chainsaw内置的基于表达式的过滤,搜索&着色支持切片&骰子日志。

步骤:   - 启动Chainsaw V2   - 通过复制欢迎选项卡中提供的示例配置文件来创建链锯配置文件 - 为要处理的每个日志文件定义一个LogFilePatternReceiver'插件'条目   - 使用该配置启动Chainsaw   - 每个日志文件最终都将作为UI中的单独选项卡   - 暂停电锯日志选项卡并清除该选项卡中的事件   - 创建一个新选项卡,通过转到“查看,crate自定义表达式logpanel”菜单项并在框中输入“level> = DEBUG”来汇总各个选项卡中的事件。它将创建一个新选项卡,其中包含来自所有选项卡的事件,其中包含级别> = debug(这就是您清除电锯日志选项卡的原因)。

您可以从教程中获得用于过滤,着色和搜索的表达式语法的概述(可从“帮助”菜单中获得)。

如果您不想使用Chainsaw,您可以执行类似的操作 - 启动一个不会记录的简单应用程序,但会加载一个log4j.xml配置文件,其中包含您为Chainsaw配置定义的'plugin'条目,但是还定义了一个带有xmllayout的FileAppender - 'receiver'接收的所有事件都将被发送到单个appender。