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.