Как мне закрыть мой процесс после использования экспресс-обработчика Raygun?
Я создаю приложение с NodeJS и Express и недавно включил обработку ошибок с Raygun.
Raygun предоставляет обработчик ошибок специально для использования с Express, но он должен быть последним промежуточным программным обеспечением для запуска. Прямо сейчас у меня есть:
//Log the domain id, req, and error to the console
app.use(function errorHandler(err, req, res, next) {
console.log('error on request %d %s %s: %s', process.domain.id, req.method, req.url, err)
next(err)
})
//Log the error to Raygun
//!Must be last piece of middleware to be defined
app.use(raygunClient.expressHandler);
Но проблема в том, что сервер продолжает работать, потенциально оставляя приложение в неизвестном состоянии. Я хотел бы сделать корректное завершение работы сервера, но если я добавлю
//Shuts down the process
app.use(function errorHandler(err, req, res, next) {
process.exit()
})
тогда экспресс-обработчик Raygun не работает.
Что?
1 ответ
Вы можете определить пользовательские raygunClient.expressHandler
очень похоже на то, что определено в библиотеке.
app.use(function errorHandler(err, req, res, next) {
console.log('error on request %d %s %s: %s', process.domain.id, req.method, req.url, err)
next(err)
})
app.use(function (err, req, res, next) {
raygunClient.send(err, {}, function (response) {
//all done
process.exit(1);
}, req);
next(err);
});
Теперь у вас также есть возможность отправить customData
в качестве второго аргумента и tags
как 5-й аргумент, который был невозможен с обработчиком ошибок по умолчанию.