【问题标题】:How to log the correct timezone with log4j which is parsable by logstash如何使用logstash可解析的log4j记录正确的时区
【发布时间】:2013-10-17 17:40:59
【问题描述】:

我在 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 吗?

【问题讨论】:

    标签: datetime timezone log4j iso8601 logstash


    【解决方案1】:

    对上述答案稍作修改,我认为小时需要是 HH 而不是 hh 才能支持 24 小时制。

    %d{yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ}
    

    【讨论】:

      【解决方案2】:

      我的解决方案是使用%d{yyyy-MM-dd'T'hh:mm:ss.SSSZZZZ}

      【讨论】:

        猜你喜欢
        • 2014-01-17
        • 2013-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多