Ниже приведены примеры журналов, полученных из Java-приложения.
2019-04-11 9:08:22:562 Log 1
2019-04-11 9:08:22:660 Log 2
2019-04-11 9:08:43:79 Log 3
2019-04-11 9:08:43:156 Log 4
. Из приведенных выше журналов я сталкиваюсь с проблемой Log 3
, где значение миллисекунд составляет только 79, но после анализа в Logstash,значение установлено как 790 мс (синтаксический анализ Logstash является правильным, но значение журнала Java является неправильным).На самом деле значение должно быть 2019-04-11 9:08:43:079
в журнале для правильного синтаксического анализа.
Фильтр Logstash выглядит следующим образом:
date {
match => [ "log_time", "yyyy-MM-dd HH:mm:ss:SSS", "ISO8601" ]
target => "log_time"
timezone => "CET"
}
При копании глубже я обнаружил, что проблема заключается в регистрации Java с этимформат времени, он будет разрешен, если формат yyyy-MM-dd HH:mm:ss.SSS
.Но приложение для ведения журнала использует формат yyyy-MM-dd HH:mm:ss:SSS
, который вызывает эту проблему (обратите внимание на разницу в формате :SSS
и .SSS
).
Я не могу изменить систему регистрации Java, поэтомуЕсть ли обходной путь с фильтром Logstash, чтобы исправить эту проблему.