使用 Raygun 的 express-handler 后如何关闭我的进程?
How do I shut down my process after using Raygun's express-handler?
我正在使用 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 的 express-handler 不起作用。
做什么?
您可以定义自定义 raygunClient.expressHandler
,就像 library 中定义的那样。
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
作为第五个参数发送,这在默认错误处理程序中是不可能的。
我正在使用 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 的 express-handler 不起作用。
做什么?
您可以定义自定义 raygunClient.expressHandler
,就像 library 中定义的那样。
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
作为第五个参数发送,这在默认错误处理程序中是不可能的。