Backend security / security (pull_request) Successful in 7s
Backend verify / verify (pull_request) Successful in 2m28s
Conventional commits / commits (pull_request) Successful in 25s
Backend security / security (push) Successful in 6s
Backend verify / verify (push) Successful in 2m16s
2.0 KiB
2.0 KiB
Observability
- Единственный logger — nestjs-pino. Application events используют
StructuredLogger,
стабильное имя события и разрешённые scalar fields.
console.logи второй logger в production не используются. info— значимый lifecycle/outcome;debug— подробности успешного RPC;warn— восстановимая проблема/retry;error— окончательный сбой. Не добавляй log на каждый вход/выход функции или дубликат HTTP completion.- RequestContextService и request middleware владеют correlation: серверный
request ID возвращается как
X-Request-ID, входящий client ID хранится отдельно. Передавай существующий context, не создавай собственный UUID в каждом service. - Wrapper ограничивает поля, Pino redacts request secrets. Не логируй passwords,
tokens, cookie, Authorization, credentials, connection generation, raw body
или upstream error. Secret в
message/stackне становится безопасным из-за allowlist; правила Security обязательны для sensitive data. - Для ошибки используй public code и безопасный context операции/попыток; error mapping не отдаёт внутренние детали клиенту.
Проверяй новые поля/redaction/correlation existing logging tests; не добавляй
тест на каждую строку log. Existing ESLint не запрещает все вызовы console
отдельным правилом: до настройки встроенного no-console это semantic review.