Перейти к содержимому
Шаблон требований к логированию

Шаблон требований к логированию

Шаблон требований к логированию и трассировке.

Шаблон требований к логированию

Логирование нужно для расследования инцидентов, поиска ошибок, сопровождения пользователей и понимания поведения системы в production.

Паспорт документа

ПолеЗначение
Система / сервис<название>
Функциональность<название>
Автор<ФИО>
СтатусDraft / Review / Approved

Цель логирования

ЦельОписание
Диагностика ошибокНайти причину ошибки
Трассировка запросаПроследить путь запроса между сервисами
Контроль интеграцийВидеть ошибки внешних систем
Поддержка пользователейНайти операцию пользователя по ID

Общие требования

IDТребование
LOG-001Каждый входящий запрос должен иметь correlationId.
LOG-002correlationId передается во все исходящие вызовы.
LOG-003В логах не должны храниться пароли, токены, секреты, полные номера карт и другие чувствительные данные.
LOG-004Ошибки внешних систем логируются с названием системы, кодом ошибки и временем ответа.

Идентификаторы

ИдентификаторНазначениеКто генерирует
correlationIdСквозная трассировка бизнес-операцииПервый входной слой / API Gateway / BFF
traceIdТехническая трассировка распределенного вызоваTracing-инструмент
spanIdУчасток traceTracing-инструмент
requestIdКонкретный HTTP/gRPC-запросСервис
userIdПользовательIAM / auth-сервис

Уровни логирования

УровеньКогда использовать
TRACEДетальная диагностика, редко в production
DEBUGОтладочная информация для dev/test
INFOНормальные бизнес- и технические события
WARNНестандартная ситуация без падения операции
ERRORОшибка, из-за которой операция не выполнена
FATALКритическая ошибка приложения

События для логирования

IDСобытиеУровеньОбязательные поля
LOG-EVT-001Получен входящий запросINFOcorrelationId, requestId, method, userId
LOG-EVT-002Операция завершенаINFOcorrelationId, operation, durationMs, status
LOG-EVT-003Ошибка валидацииWARNcorrelationId, field, errorCode
LOG-EVT-004Исходящий вызовINFOcorrelationId, targetSystem, operation
LOG-EVT-005Ошибка внешней системыERRORcorrelationId, targetSystem, statusCode, errorCode
LOG-EVT-006RetryWARNcorrelationId, attempt, maxAttempts
LOG-EVT-007TimeoutERRORcorrelationId, timeoutMs, durationMs

Структура JSON-лога

{
  "timestamp": "2026-05-09T12:00:00.000Z",
  "level": "INFO",
  "service": "example-service",
  "environment": "prod",
  "correlationId": "c7b8e7d2-9c1f-4c5a-bc6d-6b4e2d7a0001",
  "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
  "requestId": "req-123",
  "userId": "user-123",
  "operation": "CreateRequest",
  "message": "Operation completed",
  "durationMs": 153,
  "result": "SUCCESS"
}

Что запрещено логировать

КатегорияПримеры
Паролиpassword, oldPassword, newPassword
Токеныaccess token, refresh token
Секретыapi key, private key, secret
Платежные данныеполный номер карты, CVV
ПДн без маскированияпаспорт, телефон, email, адрес

Маскирование

ДанныеКак маскировать
Телефон+7******1234
Emaili***@domain.ru
Номер карты**** **** **** 1234
Token<masked>

Критерии приемки

IDКритерий
AC-LOG-001По correlationId можно найти все логи одной операции.
AC-LOG-002При ошибке зависимости есть targetSystem, errorCode, durationMs.
AC-LOG-003В логах отсутствуют токены, пароли и секреты.

Открытые вопросы

IDВопросКому адресованСтатус
Q-001<вопрос><роль / ФИО>Открыт

Критерии приемки документа

IDКритерий
AC-DOC-001Документ согласован с владельцем продукта / архитектором / разработкой, если применимо.
AC-DOC-002Все спорные места вынесены в открытые вопросы или зафиксированы как ограничения.
AC-DOC-003В документе нет неоднозначных формулировок вроде “быстро”, “удобно”, “корректно” без измеримого критерия.