lrx*_*rxw 3 timezone datetime log4j iso8601 logstash
我在 log4j 中记录正确的日期时间并使用 Logstash 解析它时遇到问题。我设置了一个带有 log4j (1.2.17) 的 tomcat 和一个仅生成一些日志的小应用程序。我记录了时间,%d{ISO8601}
结果是时区丢失,logstash 认为它是 UTC,因为我解析了它。
date {
type => "tomcat"
match => [ "orig_timestamp", "ISO8601"]
}
Run Code Online (Sandbox Code Playgroud)
之后我尝试了以下操作:
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601}%d{Z} %-5p %50.50c - %m%n" />
</layout>
Run Code Online (Sandbox Code Playgroud)
但这导致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}
Run Code Online (Sandbox Code Playgroud)
我认为:偏移量中缺少这些。但我怎样才能在没有所有手动尝试和错误的情况下做到这一点呢?我不能只是说打印带有时区的 iso8601 并解析带有时区的 ISO8601 吗?
对上面的答案稍作修改,我认为时间需要是 HH 而不是 hh 才能使它们支持 24 小时制。
%d{yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2806 次 |
| 最近记录: |