有日志解析器Java库吗?

有日志解析器Java库吗?,java,parsing,templates,logging,Java,Parsing,Templates,Logging,我得到了一堆日志,每个日志的格式如下: 10-20-2016 13:57:28 [main] ERROR com.project.Main:11 - Error message here 此日志的模板是: <date> <time> <method> <log_level> <class>:<line_no> - <message> :- 我想解析该日志并创建一个Java对象,该对象的字段与该模板上的每个标

我得到了一堆日志,每个日志的格式如下:

10-20-2016 13:57:28 [main] ERROR com.project.Main:11 - Error message here
此日志的模板是:

<date> <time> <method> <log_level> <class>:<line_no> - <message>
:-
我想解析该日志并创建一个Java对象,该对象的字段与该模板上的每个标记相匹配

我知道我可以使用字符串标记器手工完成这项工作,但我首先想知道是否有一些解析库已经解决了这个问题(可能比我做的要好得多)


我正在寻找支持这种模板的东西:如果我更改模板,解析器应该只提取那些与模板匹配的字段。

简短的回答是否定的

实际上,并不是所有您描述的属性。每个日志框架(log4j、logback、JUL是三大日志框架)都有不同的配置语义,因此任何解决方案都会特定于所讨论的后端

它们中的大多数都有某种对象或某种存在于您想要的形式中的东西,因为它在以文件或其他形式结束之前通过了管道


找出您正在使用的日志后端,只需添加一个将该内容序列化到的appender,然后在您空闲时阅读即可。

简短的回答是否

实际上,并不是所有您描述的属性。每个日志框架(log4j、logback、JUL是三大日志框架)都有不同的配置语义,因此任何解决方案都会特定于所讨论的后端

它们中的大多数都有某种对象或某种存在于您想要的形式中的东西,因为它在以文件或其他形式结束之前通过了管道


找出您正在使用的日志后端,只需添加一个将该内容序列化到的appender,然后在您空闲时阅读即可。

您在这里完全找错了方向。其想法是安装一个处理程序,根据您正在使用的日志API接收数据,并根据需要处理该数据。解析记录器输出迟早会失败。

您在这里完全找错了方向。其想法是安装一个处理程序,根据您正在使用的日志API接收数据,并根据需要处理该数据。解析记录器输出注定迟早会失败。

在很多情况下有效的方法就是确保日志以结构化格式出现

如果它们来自外部,你可以将它们穿过,并保持大部分结构可用。如果您使用的是Logback或log4j,那么有一些库可以提供帮助,例如


不过,这并不能解决所有情况,有时甚至结构化日志也会包含一些消息,这些消息可能会使用一些解析来提取值。在这种情况下,您需要编写一个自定义解析器。。。或者使用一个专门的解决方案,它将尽最大努力找出什么是日志模式并提取参数:(免责声明,我正在研究它)

在很多情况下有效的方法就是确保日志以结构化格式出现

如果它们来自外部,你可以将它们穿过,并保持大部分结构可用。如果您使用的是Logback或log4j,那么有一些库可以提供帮助,例如


不过,这并不能解决所有情况,有时甚至结构化日志也会包含一些消息,这些消息可能会使用一些解析来提取值。在这种情况下,您需要编写一个自定义解析器。。。或者使用一个专门的解决方案,该解决方案将尽最大努力找出什么是日志模式并提取参数:(免责声明,我正在研究)

我不认为使用库可以解决所有问题。JEE的行业标准是,由于它不适合内部java日志使用的格式,我98%确定没有使用核心库中的内容的解决方案。可能有一些图书馆可以解决你的问题,但这要求提供一个与StackOverflow无关的建议,因为它是自以为是的。Splunk的操作系统模拟是LogstashI。我知道这一点,但我想知道是否有第三方库做了类似于我想要的事情。我不认为你能用库解决所有问题。JEE的行业标准是,由于它不适合内部java日志使用的格式,我98%确定没有使用核心库中的内容的解决方案。可能有一些库可以解决您的问题,但这要求提供一个与StackOverflow无关的建议,因为它是自以为是的。Splunk的操作系统模拟是LogstashI知道这一点,但我想知道是否有第三方库可以做类似于我想要的事情。