2013-10-17 32 views
1

我在登錄log4j中的正確日期時間時遇到問題,並使用logstash解析它。 我用log4j(1.2.17)和一個只生成一些日誌的小應用程序設置了一個tomcat。 我使用%d{ISO8601} 來記錄時間,結果是時區丟失,logstash認爲它是UTC,因爲我解析它。如何使用logstash記錄正確的時區,可以通過logstash解析

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與時區?

回答

0

我的解決辦法是使用%d{yyyy-MM-dd'T'hh:mm:ss.SSSZZZZ}

2

輕微修正上述答案,我想的時間必須是HH代替HH以使其支持24小時時鐘。

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