Код Middle Ошибки и логирование обновлено
Структурный лог с маскированием секретов
Условие
Напиши formatLog(level, msg, ctx, minLevel): возвращает строку JSON одной записи лога или null, если уровень ниже порога. Уровни по возрастанию: debug, info, warn, error.
Запись: { level, msg, ...ctx } (поля в этом порядке). Значения ключей password, token, authorization, cookie, secret (без учёта регистра) на любой глубине заменяются на "[REDACTED]". Входной ctx не изменять.
Примеры
formatLog("info", "user login", {"userId":7}, "info") // "{\"level\":\"info\",\"msg\":\"user login\",\"userId\":7}"
formatLog("debug", "sql", {"q":"select 1"}, "info") // null
formatLog("error", "x", {}, "warn") // "{\"level\":\"error\",\"msg\":\"x\"}"
Как подойти
Подсказки: 2
- Рекурсивная копия с подменой значений по имени ключа.
- Сравнивай ключ в нижнем регистре.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Graceful shutdown: дождаться запросов в работе
Следующий вопрос
Код-ревью: обработка ошибок в сервисе