Skip to content

SFS-008 Logging (Журналирование)

Этот документ описывает принципы ведения лога приложения.

  1. Приложения пишут свой лог в STDOUT.
  2. Приложение стартовое сообщение со своим именем и версией сразу первой строкой к функции main ДО всех инициализаций, аллокации памяти и установки соединений. Например: Staring Blockberry v1.2.3.
  3. Приложение пишет в log момент когда оно инициализировано и готово принмать запросы/выполнять работу: Initialization completed. Ready to work.
  4. Сообщение пишется в log ОДНОЙ сторокой (избегать многострочных сообщений).
  5. Длинна записи не должна превышать 10Kb.
  6. Добавлять к сообщениям correlation_id
  7. Делить сообщения больше 10Gb на части и искать по correlation_id
  8. Использовать UID между сервисами
  9. Ограничить поля логов только самыми необходимыми
  10. Избегать многострочных сообщений
  11. Не писать в сообщения пароли и другую чувствительную информацию
  12. Категорировать сообщения по уровнять (INFO, ERROR, DEBUG и тд)
  13. Приложение пишет в лог о своем завершени и причине см Graceful shutdown

Форматы записей в логе

timestamp пишется в формате ISO8601 с указанием временной зоны.

Текстовый формат

Текстовая строка в кодировке UTF-8. Формат:

 <DATE> <LOG_SEVERITY_SYMBOL> <MESSAGE>

Пример:

2024-12-12T19:31:35+00:00 INFO Staring Application v1.2.3

JSON

Обязательные поля:

  • timesatmp
  • message - тестовая строка с сообщением
  • level - уровень записи

допускаются также любые другие поля.

Пример:

{"timestamp":"2024-12-12T19:31:35+00:00","message":"Starting Blockbery v1.2.3","level": "INFO", "extra":"Other info"}

Date/Timestamp

Допустимые значения даты/времени: https://docs.datadoghq.com/logs/log_configuration/parsing/?tab=matchers#parsing-dates

Рекомендуемый формат: yyyy-MM-dd'T'HH:mm:ss.SSSZ пример: 2016-11-29T16:21:36.431+0000

Severity/Level

Допустимые значения для level * https://en.wikipedia.org/wiki/Syslog#Severity_level * https://docs.datadoghq.com/logs/log_configuration/processors/?tab=ui#log-status-remapper

Best practices