logStash对于多行日志的合并(四)

日志总是免不了出异常 ,或者开发人员打出的日志 是json格式 多行的就需要对 日志多行进行合并 ,这个很常用 ,之后我会再开一个flume合并多行的情况
诸如此类的日志:

[ERROR] [] 2017-10-23 09:34:37,855 操作超时,请重新登录
com.*****.*******.exception.MobileException: 操作超时,请重新登录
    at com.*****.*****.base.session.MobileIntercepter.preHandle(MobileIntercepter.java:102)
    at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:130)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:919)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:839)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:57)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:89)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:57)
    at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:57)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)

又或者是 这样的:

[INFO ] [] 2017-10-23 09:26:08,713 当前的参数为:{
  "data" : {
    "*******" : "#####################6ypPsznW########ccYmnCSw6HTog=jCD\/t1flm4bU2GL9Xf+hFQ=="
  },
  "header" : {
    "*******" : "#####",
    "********" : "####",
    "********" : "#####",
    "*********" : "#####################IP36ypPsznW6ure7DxYSS350xPw9ccYmnCSw6HTog=jCD\/t1flm4bU2GL9Xf+hFQ==",
    "******" : "1.0",
    "******" : "2"
  }
}
[INFO ] [##############] 2017-10-23 09:26:09,479 接收参数完毕

涉及到公司隐秘 部分日志在这里手动脱敏了

下面说 详细解决方案:

在logStash低版本中 使用 filter中的 multiline插件 在高版本中 filter中没有 multiline插件 此插件转移到了 input codec插件中

低版本:

filter {
    multiline {
    }

高版本:

input {
    file {
       type => "e_mall-bank"
       path => "/var/logs/*.log"
       start_position => "beginning"
       codec=>multiline{
                pattern => "\s*\["
                negate => true
                what => "previous"
        }

    }
}

重点内容在 codec插件中 的 multiline插件
pattern 是 匹配日志的正则 negate是 是否匹配(正选,反选)
what 是 匹配到的那些加入到 上一个事件还是下一个事件
默认一行一个事件 我当然加入上一个事件啦

这样 抛出的异常 什么 一大堆 at 都在一行了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值