intermediate

Структурированные логи

Эмитируйте машиночитаемые события со стабильными полями: service, environment, request, безопасный контекст пользователя и исход.

Структурированные логи — машиночитаемые события (обычно JSON) со стабильными именами полей вместо свободного текста. Это даёт фильтрацию, агрегацию и корреляцию в Loki, CloudWatch, Datadog или ELK без хрупких regex.

					logger.info({
  service: 'checkout-api',
  requestId: req.id,
  route: '/orders',
  status: 201,
  durationMs: 42,
  event: 'order_created',
});
				

| Поле | Назначение | |------|------------| | service / env | Отсечь шум в multi-tenant представлениях | | requestId / traceId | Сшить логи между hop'ами | | route / operation | Группировка по пользовательской поверхности | | outcome / status | SLO и error-дашборды |

Держите схему единой между сервисами. Небольшой набор обязательных полей плюс опциональный контекст. Бизнес-события — на info, когда они нужны поддержке, а не каждая debug-переменная.

На интервью: JSON vs plain text, соглашения по именам полей, cardinality динамических ключей и связка с correlation ID.

Типовые ошибки: логировать целиком body запроса; разные имена полей в сервисах; интерполяция строк, ломающая парсинг; high-cardinality labels в индексах логов.

Компромисс — стоимость хранения и индексации против скорости запросов при инцидентах.

Чеклист:

  • Стабильные имена полей между сервисами.
  • request/trace идентификаторы в каждом событии.
  • Без неограниченных динамических ключей.
  • Редакция чувствительных значений до emit.