@minority

Как на node js (express) обрабатывать и логировать ошибки?

Делаю api на node\express, так как пришел с пхп появился вопрос, как правильно в приложении отлавливать и логировать ошибки в зависимости от того что это prod\dev.
В пхп фреймворках окружение легко переключается и в одном случае только код ошибки (и запись в лог) в другом весь стектрейс, ну и это централизовано сделано.

Тут что то не нашел такого, пытаюсь сделать что то типа такого middleware, но пока без успешно, подскажите как это правильно делается и нужно ли это.

// error handler
app.use((err, req, res, next) => {
  const error = config.isDev ? err : {};

  res.status(err.status || 500);
  res.json(error);
});


UPD
Сейчас дошел до такого способа не знаю на сколько это best practices
import User from "../models/User";

class UserController {
  index(req, res, next) {
    User.find(-1) //генерим ошибку
      .then(users => res.json(users))
      .catch(error => next({ status: 400, error }));
  }
}

Код попадает в этот middleware
// error handler
app.use((err, req, res, next) => {
  const error = config.isDev ? err : {};
  
  res.status(err.status || 500);
  res.json(error);
});
  • Вопрос задан
  • 318 просмотров
Пригласить эксперта
Ответы на вопрос 1
Xuxicheta
@Xuxicheta
инженер
Ваше решение вполне допустимо.
Хотя я привык отсылать ошибку прямо в методе контроллера, в его конце в catch. Так проще отлаживать.
А разное логирование реализуется своими функциями логирования. Которые могут меняться в зависимости от env.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы