Как зарегистрировать правильный часовой пояс с помощью log4j, который можно проанализировать с помощью logstash

У меня проблемы с записью правильного datetime в log4j и анализом его с помощью logstash. Я установил tomcat с log4j (1.2.17) и небольшим приложением, которое просто создает некоторые журналы. Я записал время с %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 с часовым поясом?

2 ответа

Решение

Мое решение было использовать %d{yyyy-MM-dd'T'hh:mm:ss.SSSZZZZ}

Небольшая поправка к ответу выше, я думаю, что часы должны быть ЧЧ, а не чч, чтобы они поддерживали 24-часовые часы.

%d{yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ}
Другие вопросы по тегам