资讯专栏INFORMATION COLUMN

Java中解析日志

haitiancoder / 2746人阅读

摘要:中解析日志常用的是,是一个用于解析和其它文件的简单易用的,并且它可以将这些无结构的转换成结构化的数据使用正则表达式对进行解析,常用的是和,下面来具体说说各自的使用是组织提供的实现,在仓库中输入就可以找到对应的包简单项目如果是简单项目,直接

Java中解析日志常用的是Grok,Grok是一个用于解析logs和其它文件的简单易用的API,并且它可以将这些无结构的logs转换成结构化的数据(JSON),使用正则表达式对logs进行解析,常用的是grok和java-grok,下面来具体说说各自的使用

grok

grok是io.thekraken组织提供的实现,在mven仓库中输入io.thekraken就可以找到对应的jar包

简单Java项目

如果是简单Java项目,直接引入依赖的jar包即可,对于0.1.5的版本,必须引入5个jar包:commons-lang3-3.1.jar、slf4j-api-1.7.25.jar、slf4j-nop-1.7.25.jar、gson-2.2.2.jar、grok-0.1.5.jar

MAVEN项目

如果是MAVEN项目,直接POM文件中添加如下依赖就可以了


    io.thekraken
    grok
    0.1.5
使用举例

由于logs等结构复杂,所以grok使用正则表达式来解析日志,它对于很多常见的logs(如:mongodb、redis、java)已经内置好了正则表达式库,当然也可以根据logs的格式自定义正则表达式库,使用起来很简单,代码如下:

public static void useGrok()  throws Exception {
    String GROK_PATTERN_PATH = "src/grok-pattern";
    String logMsg = "<165>1 2003-08-24T05:14:15.000003-07:00 192.0.2.1 myproc 8710 - - %% It"s time to make the do-nuts.";
    String pattern = "%{SYSLOG5424LINE}";
    Grok grok = new Grok();
    grok.addPatternFromFile(GROK_PATTERN_PATH);
    grok.compile(pattern);
    Match grokMatch = grok.match(logMsg);
    grokMatch.captures();
    if(!grokMatch.isNull()){
        System.out.println(grokMatch.toMap().toString());
        System.out.println(grokMatch.toJson().toString());
    }else{
        System.out.println("not match");
    }
}

可以在Github上查看更多关于grok的使用

java-grok

java-grok是io.krakens组织提供的实现,在maven仓库中输入io.krakens即可找到对应的jar包

简单Java项目

如果是简单Java项目,直接引入依赖的jar包即可,对应0.1.9版,除了引入java-grok-0.1.9.jar外,还必须引入commons-lang3-3.1.jar

MAVEN项目

如果是MAVEN项目,直接POM文件中添加如下依赖就可以了


    io.krakens
    java-grok
    0.1.9
使用举例

java-grok也内置了许多正则表达式,使用起来相对grok简单,不需要显示地指定pattern文件位置

public static void useJavaGrok() throws Exception {
    GrokCompiler grokCompiler = GrokCompiler.newInstance();
    grokCompiler.registerDefaultPatterns();
    final io.krakens.grok.api.Grok grok = grokCompiler.compile("%{COMBINEDAPACHELOG}");
    String log = "112.169.19.192 - - [06/Mar/2013:01:36:30 +0900] "GET / HTTP/1.1" 200 44346 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22"";
    io.krakens.grok.api.Match grokMatch = grok.match(log);
    final Map capture = grokMatch.capture();
    System.out.println(capture);
}

可以在Github上查看更多关于java-grok的使用

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72010.html

相关文章

  • 崩溃bug日志总结1

    摘要:项目中异常分析引发崩溃日志的流程分析解决办法常见的出现场景状态异常非法线程操作。引发崩溃日志的流程分析解释如下所示,释放与此位图关联的本机对象,并清除对像素数据的引用。 目录介绍 1.1 java.lang.UnsatisfiedLinkError找不到so库异常 1.2 java.lang.IllegalStateException非法状态异常 1.3 android.conten...

    Scott 评论0 收藏0
  • 强推!大牛程序员必备的Java日志框架,性能无敌

    摘要:本文要来分享给大家程序员最常用的日志框架组件。没有基础的同学也不要着急,这套教程覆盖了目前所有的日志框架,只要你学,就一定用得到,先收藏,以备不时之需。 作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用、WEB应用以及移动应用。然而日志系统是一个成熟Java应用所必不可少的。在开发和调试阶段,日志可以帮...

    zebrayoung 评论0 收藏0
  • Play framework源码解析 Part3:Play的初始化与启动

    摘要:使用自建的类加载器主要是为了便于处理预编译后的字节码以及方便在模式下进行即时的热更新。 注:本系列文章所用play版本为1.2.6 在上一篇中,我们分析了play的2种启动方式,这一篇,我们来看看Play类的初始化过程 Play类 无论是Server还是ServletWrapper方式运行,在他们的入口中都会运行Play.init()来对Play类进行初始化。那在解析初始化之前,我们先...

    xuxueli 评论0 收藏0
  • Android实际开发bug大总结

    摘要:换句话说,环境或应用程序没有处于请求操作的适当状态。项目中异常分析引发崩溃日志的流程分析解决办法常见的出现场景状态异常非法线程操作。导致的方法出来显示消息位于该消息之后,迟迟没有执行。这时候,的超时检测结束,删除了服务中的记录。 目录介绍 1.1 java.lang.UnsatisfiedLinkError找不到so库异常 1.2 java.lang.IllegalStateExce...

    peixn 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<