Неверный формат времени с системным журналом - PullRequest
3 голосов
/ 22 октября 2019

Я пытаюсь загрузить системные журналы, созданные Java-разработчиком, в Stackdriver от Google, используя Bindplane. Bindplane построен из беглого.

Я использую тип источника хвоста. Bindplane может прочитать файл журнала и отправить его в Stackdriver, но всегда добавляет следующую ошибку в текст сообщения JSON:

 error: "invalid time format: value = 2019-10-21 16:52:29.588 EDT, error_class = ArgumentError, error = invalid strptime format - `%Y-%m-%d %H:%M:%S.%L%z'"

Формат, в котором отображаются журналы, немного отличается от большинстваФорматы системного журнала:

2019-10-21 13:15:02.439 EDT main TRACE Processor.init()

Это то, что у меня есть в моей конфигурации fluentd:

<source>
  @type tail
  path C:/Test/Connect_Test/Log/**TestDL**.txt
  pos_file C:/BlueMedora/BindplaneLogAgent/config/449c6ffb-1a29-4172-9058-e19de236d712.tail.log.pos
  tag 449c6ffb-1a29-4172-9058-e19de236d712.1st_auto_policy
  format syslog
  time_format %Y-%m-%d %H:%M:%S.%L%z
</source>

Есть ли способ избежать этой ошибки, не меняя журналы? Поскольку класс / методы принадлежат другому разработчику, я не могу изменить способ записи журналов.

Спасибо за любую помощь!

1 Ответ

1 голос
/ 22 октября 2019

Эдди -

Я работаю на Blue Medora, BindPlane - наш продукт. Это должно решить вашу проблему, если нет, сообщите нам об этом, и мы поможем правильно настроить его.

Попробуйте time_format %Y-%m-%d %H:%M:%S.%L %Z

  1. Строчная z обозначает часовой пояс как чассмещение от UTC "(например, + 0400)
  2. Заглавная буква Z представляет собой" имя часового пояса ", которое выглядит так, как у вас в файлах журнала.
  3. Похоже, что между миллисекундами и часовым поясом есть пробел. Поэтому также следует добавить пробел.

Вот ссылка на документацию по опциям strptime () , которая показывает разницу между% z и% Z

Опять же, если это не работает для вас, пожалуйста, сообщите нам.

...