Log4j 如何从日志存储事件中删除日期

Log4j 如何从日志存储事件中删除日期,log4j,logstash,kibana,kibana-4,logstash-grok,Log4j,Logstash,Kibana,Kibana 4,Logstash Grok,我的日志文件中有以下消息 2015-05-08 12:00:00,648064070: INFO : [pool-4-thread-1] com.jobs.AutomatedJob: Found 0 suggested order events 这是我在Logstash/Kibana中看到的(选择了日期和消息) Kibana左边的日期是插入日期。(2015年5月8日,12:16:19.691) 下一个日期来自日志声明(2015-05-08 12:00:00648064070) 接下来是日志记

我的日志文件中有以下消息

2015-05-08 12:00:00,648064070: INFO  : [pool-4-thread-1] com.jobs.AutomatedJob: Found 0 suggested order events
这是我在Logstash/Kibana中看到的(选择了日期和消息)

Kibana左边的日期是插入日期。(2015年5月8日,12:16:19.691)

下一个日期来自日志声明(2015-05-08 12:00:00648064070)

接下来是日志记录的信息级别

最后是信息

我希望将这些组件分成三个部分,以便日志级别在kibana中是它自己的字段,并删除消息部分中的日期或使其成为实际日期(而不是插入日期)

谁能帮帮我吗。我想我需要一个grok过滤器

这就是我目前所拥有的

input
{
    file {
        debug => true
        path => "C:/office-log*"
        sincedb_path => "c:/tools/logstash-1.4.2/.sincedb"
        sincedb_write_interval => 1
        start_position => "beginning"
        tags =>  ["product_qa"]
        type => "log4j"
    }
}
filter {
  grok {
    match => [ "message", "%{TIMESTAMP_ISO8601}: %{LOGLEVEL}" ]
  }
}

output {
  elasticsearch {          
    protocol => "http"
    host => "0.0.0.x"
  }
}
此grok筛选器似乎不会更改Kibana中显示的事件。 我仍然只看到主机/路径/类型等


我一直在使用计算grok语法,您需要命名从grok返回的结果,然后使用日期过滤器设置
@timestamp
,以便使用记录的时间而不是插入时间

根据您目前的情况,您可以这样做:

filter {
  grok {
    match => [ "message", "%{TIMESTAMP_ISO8601:logdate}: %{LOGLEVEL:loglevel} (?<logmessage>.*)" ]
  }
  date {
    match => [ "logdate", "ISO8601" ]
  }
  #logdate is now parsed into timestamp, remove original log message too
  mutate {
    remove_field => ['message', 'logdate' ]
  }
}
过滤器{
格罗克{
match=>[“message”,“%{TIMESTAMP_ISO8601:logdate}:%{LOGLEVEL:LOGLEVEL}(?.*]”
}
日期{
匹配=>[“日志日期”,“ISO8601”]
}
#logdate现在被解析为时间戳,删除原始日志消息
变异{
删除_字段=>['message','logdate']
}
}

remove_字段参数可用于所有插件,因此您可以将其折叠到日期过滤器中。
filter {
  grok {
    match => [ "message", "%{TIMESTAMP_ISO8601:logdate}: %{LOGLEVEL:loglevel} (?<logmessage>.*)" ]
  }
  date {
    match => [ "logdate", "ISO8601" ]
  }
  #logdate is now parsed into timestamp, remove original log message too
  mutate {
    remove_field => ['message', 'logdate' ]
  }
}