我在 log4j 中记录正确的日期时间并用 logstash 解析它时遇到问题。我用 log4j (1.2.17) 和一个只产生一些日志的小应用程序设置了一个 tomcat。我用它记录了时间%d{ISO8601}
结果是时区丢失了,logstash 认为它是 UTC,因为我用它来解析它。
date {
type => "tomcat"
match => [ "orig_timestamp", "ISO8601"]
}
之后我尝试了以下方法:
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601}%d{Z} %-5p %50.50c - %m%n" />
</layout>
但这导致logstash中出现以下错误:
{:timestamp=>"2013-10-17T19:13:12.977000+0200", :message=>"Failed parsing date from field", :field=>"orig_timestamp", :value=>"2013-10-17 19:00:02,059+0200", :exception=>java.lang.IllegalArgumentException: Invalid format: "2013-10-17 19:00:02,059+0200" is malformed at " 19:00:02,059+0200", :level=>:warn}
我认为:
偏移量中缺少。但是,如果没有所有手动尝试和错误,我怎么能做到呢?我不能只说用时区打印 iso8601 并用时区解析 ISO8601 吗?