Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jakarta ee Logstash多行筛选器配置和java异常_Jakarta Ee_Logging_Monitoring_Logstash - Fatal编程技术网

Jakarta ee Logstash多行筛选器配置和java异常

Jakarta ee Logstash多行筛选器配置和java异常,jakarta-ee,logging,monitoring,logstash,Jakarta Ee,Logging,Monitoring,Logstash,我们最近开始使用logstash收集所有java服务器日志 默认log4j配置工作正常,但对于异常和sql查询,我们使用: 但这并不能100%准确地工作,有些异常/sql没有所需的格式 可以通过以下方式配置多行插件: 如果行的行号上没有时间戳,那就是多行日志消息?使用多行编解码器,文档甚至有一个例子来说明这个确切的问题 改用多行编解码器,文档中甚至有一个例子来说明这个问题 我终于成功解析了日志文件中的多行日志消息。请注意,您的日志消息可能略有不同,需要更改grok模式。主要的修复方法是将多行过滤

我们最近开始使用logstash收集所有java服务器日志

默认log4j配置工作正常,但对于异常和sql查询,我们使用:

但这并不能100%准确地工作,有些异常/sql没有所需的格式

可以通过以下方式配置多行插件:


如果行的行号上没有时间戳,那就是多行日志消息?

使用多行编解码器,文档甚至有一个例子来说明这个确切的问题

改用多行编解码器,文档中甚至有一个例子来说明这个问题

我终于成功解析了日志文件中的多行日志消息。请注意,您的日志消息可能略有不同,需要更改grok模式。主要的修复方法是将多行过滤器放在grok过滤器之前,并在它和grok过滤器之间执行drop{}。重要提示:使用调试grok筛选器

input {
  stdin {
    type => "log4j"
  }
}

filter {
  if [type] == "log4j" {

    multiline {
      pattern => "^[\d]{4}\-[\d]{2}\-[\d]{2} "
      negate => true
      what => previous
    }
    if "_grokparsefailure" in [tags] {
      drop { }
    } 
    grok {
      match => {
      "message" =>  "(?<logdate>[\d]{4}\-[\d]{2}\-[\d]{2} [\d]{2}:[\d]{2}:[\d]{2},[\d]{3})%{SPACE}%{NUMBER:unknown1}%{SPACE}%{LOGLEVEL:severity}%{SPACE}\[(?<logger>[^\]]+)\]%{SPACE}\((?<thread>[^\)]+)\)%{SPACE}%{GREEDYDATA:message}"
      }
      overwrite => [ "message" ]
    }

    if !("_grokparsefailure" in [tags]) {
      date {
        match => [ "logdate", "YYYY-MM-dd HH:mm:ss,SSS"]
      }
    }
  }
}


output {   
  # Print each event to stdout.
  stdout {
    codec => json
  }
}

我终于成功地解析了日志文件中的多行日志消息。请注意,您的日志消息可能略有不同,需要更改grok模式。主要的修复方法是将多行过滤器放在grok过滤器之前,并在它和grok过滤器之间执行drop{}。重要提示:使用调试grok筛选器

input {
  stdin {
    type => "log4j"
  }
}

filter {
  if [type] == "log4j" {

    multiline {
      pattern => "^[\d]{4}\-[\d]{2}\-[\d]{2} "
      negate => true
      what => previous
    }
    if "_grokparsefailure" in [tags] {
      drop { }
    } 
    grok {
      match => {
      "message" =>  "(?<logdate>[\d]{4}\-[\d]{2}\-[\d]{2} [\d]{2}:[\d]{2}:[\d]{2},[\d]{3})%{SPACE}%{NUMBER:unknown1}%{SPACE}%{LOGLEVEL:severity}%{SPACE}\[(?<logger>[^\]]+)\]%{SPACE}\((?<thread>[^\)]+)\)%{SPACE}%{GREEDYDATA:message}"
      }
      overwrite => [ "message" ]
    }

    if !("_grokparsefailure" in [tags]) {
      date {
        match => [ "logdate", "YYYY-MM-dd HH:mm:ss,SSS"]
      }
    }
  }
}


output {   
  # Print each event to stdout.
  stdout {
    codec => json
  }
}

链接已被删除链接已被删除