logstash:如何从log4j消息中提取数据?

时间:2015-07-17 10:06:06

标签: log4j logstash

我尝试使用logstash从log4j消息中提取数据。 消息看起来像这样:

Method findAll - Start by : bokc

我想提取方法名称:“findAll”和用户“bokc”。

我该怎么做?

我使用logstash 1.5.2,我的配置是:

input {
    log4j {
        mode => "server"
        type => "log4j-artemis"
        port => 4560
    }
}

filter {
  multiline {
    type => "log4j-artemis"
    pattern => "^\\s"
    what => "previous"
  }
  mutate {
    add_field => [ "source_ip", "%{host}" ]
  }
}

1 个答案:

答案 0 :(得分:0)

使用grok filter

filter {
  grok {
    match => [
      "message",
      "^Method %{WORD:method} - Start by : %{USER:user}"
    ]
    tag_on_failure => []
  }
}

这将两个单词提取到字段"方法"和"用户"。 tag_on_failure的设置可确保不匹配的邮件不会被_grokparsefailure标记。由于大多数消息不是假设以匹配模式,因此将它们标记为失败是没有意义的。