Форматирование журналов AWS Cloud Watch

У меня проблема с журналами на Cloud Watch. Я продолжаю вести журналы по разным записям, а не по одной записи в журнале. Вот пример.

Вывод в консоли:

[2020-12-21T11:51:21.966] [ERROR] default - [handlerProcess] [
  ValidationError {
    target: OnBroadcastStart {
      broadcast_id: 'bro_...',
      session_id: null,
      timestamp: '2020-12-21T11:51:21.920Z'
    },
    value: null,
    property: 'session_id',
    children: [],
    constraints: {
      isNotEmpty: 'session_id should not be empty',
      isString: 'session_id must be a string'
    }
  }
]

This is the output from a single error log.

Вывод в облачных часах:

[2020-12-21T11:51:21.966] [ERROR] default - [handlerProcess] [
[2020-12-21T11:51:21.966]   ValidationError {
[2020-12-21T11:51:21.966]     target: OnBroadcastStart {
[2020-12-21T11:51:21.966]       broadcast_id: 'bro_...',
[2020-12-21T11:51:21.966]       session_id: null,
[2020-12-21T11:51:21.966]       timestamp: '2020-12-21T11:51:21.920Z'
[2020-12-21T11:51:21.966]     },
[2020-12-21T11:51:21.966]     value: null,
[2020-12-21T11:51:21.966]     property: 'session_id',
[2020-12-21T11:51:21.966]     children: [],
[2020-12-21T11:51:21.966]     constraints: {
[2020-12-21T11:51:21.966]       isNotEmpty: 'session_id should not be empty',
[2020-12-21T11:51:21.966]       isString: 'session_id must be a string'
[2020-12-21T11:51:21.966]     }
[2020-12-21T11:51:21.966]   }
[2020-12-21T11:51:21.966] ]

Здесь каждая строка - это запись.

Есть ли способ исправить это? В качестве регистратора проекта я использую Log4js.




Ответы (1)


Поэтому, если вы используете агент Cloudwatch, вам необходимо настроить параметр Timestamp_format. Если вы не укажете формат, CloudWatch будет пинговать каждую строку журнала с меткой времени и датой, зависящими от эпохи.

Чтобы настроить параметры агента, вы можете найти информацию здесь: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html

person Eric E    schedule 21.12.2020
comment
Что делать, если я не настраивал агента? Например, эти журналы автоматически создаются из контейнера ECS с помощью Fargate. Я вхожу в консоль из своего приложения, и она входит в облачные часы. Ничего не настраивал. - person Mido; 22.12.2020
comment
Итак, это Cloudwatch, который собирает ваши журналы Log4js и передает их в CW (насколько я понимаю). - person Eric E; 22.12.2020
comment
Хорошо - у вас есть Log4JS, который не выводит журналы в формате, распознаваемом Cloudwatch, поэтому он добавляет каждую строку с полученным DTG. проверьте приложение log4js cloudwatch (npmjs.com/package/log4js-cloudwatch-appender) для вашего проекта (я предполагаю, что это nodeJS). Если вместо этого вы говорите о log4j (для Apache), сообщите мне. - person Eric E; 22.12.2020
comment
Большое спасибо, Эрик! Я обязательно это проверю! - person Mido; 23.12.2020