Skip to content

Latest commit

 

History

History
62 lines (50 loc) · 5.12 KB

logging-error-handling.md

File metadata and controls

62 lines (50 loc) · 5.12 KB

Logging & Error Handling

Базовая реализация

  1. Логирование (как минимум url, query parameters, body) для всех запросов к серверу, а также кода ответа (status code)плюс 20 баллов
  2. Добавлена централизованная обработка всех ошибок, которая включает отправку респонса с соответствующим кодом http статуса и их логирование плюс 20 баллов
  3. Добавлены обработка и логирование ошибок на событие uncaughtException плюс 10 баллов
  4. Добавлены обработка и логирование ошибок на событие unhandledRejection плюс 10 баллов
  5. Процесс логирования осуществляется единственным модулем (т.е. код, осуществляющий логирование, находится в одном модуле, при этом этот модуль может использоваться внутри других модулей) плюс 20 баллов

Продвинутая реализация

  1. Логи записываются в файл плюс 20 баллов
  2. Логи ошибок записываются в отдельный файл (либо только в него, либо в дополнение к записи в общий файл) плюс 10 баллов
  3. Добавить переменную окружения для указания уровня логирования и соотвутствующий функционал плюс 20 баллов
    При указании уровня логирования будут регистрироваться записи этого уровня и всех уровней с более высоким приоритетом. Например, указав уровень 2, вы соберете в лог все сообщения уровней 0, 1 и 2. Пример уровней логирования:
  • 0: error (ошибка)
  • 1: warn (предупреждение)
  • 2: info (информация)
  • 3: debug (отладочное сообщение)
  • 4: all (все сообщения)

Штрафы

  • Наличие изменений в тестах либо в workflow минус 100 баллов
  • Внесение изменений в репозиторий после дедлайна не считая коммиты, вносящие изменения только в Readme.md и вспомогательные файлы минус 30% от максимального балла за задание (для этого задания 39 баллов)
  • За каждый непрошедший тест минус 10 баллов
  • За каждую ошибку линтера при запуске npm run lint на основе локального конфига, равно как и за ошибки компиляции на основе локального tsconfig минус 10 баллов (именно errors, не warnings)
  • Имеется явно указанный тип any минус 20 баллов за каждое использование
  • За отсутствие отдельной ветки для разработки минус 20 баллов
  • За отсутствие Pull Request минус 20 баллов
  • За неполную информацию в описании Pull Request (отсутствует либо некорректен один из 3 обязательных пунктов) минус 20 баллов
  • Меньше 3 коммитов в ветке разработки, не считая коммиты, вносящие изменения только в Readme.md, либо другие вспомогательные файлы — минус 20 баллов

Подсказки:

  • (3 пункт) Для проверки пропишите throw Error('Oops!') ПОСЛЕ process.on('uncaughtException', () => {...}). Например, в случае с Express:
// Express initialization
const app = express().use(...);

// Exceptions catcher
process.on('uncaughtException'...);

// PUT IT HERE
throw Error('Oops!');

module.exports = app;

Как результат: вывод в консоли отловленной ошибки

  • (4 пункт) Для проверки пропишите Promise.reject(Error('Oops!')) ВНЕ инициализации express и ПОСЛЕ process.on('unhandledRejection', () => {...}). Например, в случае с Express:
// Express initialization
const app = express().use(...);

// Exceptions catcher
process.on('unhandledRejection'...);

// PUT IT HERE
Promise.reject(Error('Oops!'));

module.exports = app;

Как результат: вывод в консоли отловленной ошибки