开发者社区 问答 正文

elk的logstash怎么过滤出报错的模块?报错

日志示例:

2016-08-25 18:03:25 
[INFO]-[com.asin.module.industry.init()]: 初始化==null

<p style="color:#444444;font-family:Tahoma, Arial, Helvetica, sans-serif;font-size:14px;background-color:#FFFFFF;">
	2016-08-25 18:03:25 <br>

[ERROR]-[com.asin.module.product.update()]: 更新异常!!! 
java.lang.NullPointerException 
    at com.asin.module.product(Aproduct.java:37) 
    at com.asin.module.product.productController.list(productController.java:64) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.jfinal.aop.Invocation.invoke(Invocation.java:73) 
    at com.asin.psa.interceptor.PsaLoginInterceptor.intercept(PsaLoginInterceptor.java:29) 
    at com.jfinal.aop.Invocation.invoke(Invocation.java:67) 
    at com.asin.sa.interceptor.SaLoginInterceptor.intercept(SaLoginInterceptor.java:32) 
    at com.jfinal.aop.Invocation.invoke(Invocation.java:67) 
    at com.asin.

需求:

1、过滤出ERROR的日志
2、过滤出ERROR、并匹配出模块

展开
收起
爱吃鱼的程序员 2020-06-09 11:10:30 555 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    回复 @zuodev:按照每个时间戳后面有个换行给你匹配了:

    filter{grok{match=>{"message"=>"%{TIMESTAMP_ISO8601:date}\n\[(?<loglevel>\w+)\]-\[(?<module>.+?)\]:%{GREEDYDATA:content}"}remove_field=>"message"}}



    测了下下,基本可以满足需求了!!!正则解析一把,把loglevel字段抓出来不就完了?这些在官方的grokfilter都有相关文档的,自行阅读文档解决回复 @Feng_Yu:谢谢您的这番指点!回复 @zuodev:通常你可以认为前面几个都是日志的元数据,比如时间戳,日至级别,class等等。这些通常是不换行的,因为方便使用grep/sed等命令行工具进行日志过滤。换行的通常是最后的content部分。一旦换行就难以用grep/sed/awk这些工具处理。所以通常日志设置都是元数据在一行。看下面我的回复,抓出来了我们公司比较创新,时间戳后面换行了。第一个问题解决了,第二个问题没解决回复 @zuodev:时间戳和日志正文还有个换行?我看你复制出来的怎么还有个换行?一般日志格式都不会这么设计的回复 @Feng_Yu:用\s或者\n表示换行,都不能被匹配
    2020-06-09 11:10:45
    赞同 展开评论
问答分类:
问答地址: