node.js - 禁止在 express 中的 next(err) 方法上将日志记录到控制台
问题描述
app.get('/test', (req, res, next) => {
const err = new Error('Test');
next(err);
});
express 会将错误和堆栈跟踪记录到控制台。有没有办法可以抑制日志记录?
解决方案
如果您在 Express 实现中放置一个错误处理程序中间件来处理这样的next(err)
调用:
// defined as the last route
app.use(function (err, req, res, next) {
res.status(500).send('Something broke!')
});
然后,Express 不会记录任何错误,您可以控制针对错误发送的响应。
我建议阅读有关 Express 错误处理的页面:https ://expressjs.com/en/guide/error-handling.html 。
如果您查看此日志记录来自的快速代码,它来自此代码:
function logerror(err) {
/* istanbul ignore next */
if (this.get('env') !== 'test') console.error(err.stack || err.toString());
}
奇怪的是,如果你这样做:
app.set('env', 'test');
或者您NODE_ENV=test
在启动服务器之前在环境中设置,那么它也会跳过错误日志记录。但是,最好使用您自己的错误处理程序来控制事情,因为我展示了您还可以在哪里控制发送什么类型的响应。
推荐阅读
- sql-server - 即使数据没有更新,MERGE 语句也会更新
- mfc - 在 MFC 应用程序中调整大小的 PNG 图像的显示问题
- c++ - 定期清理地图
- kubernetes-helm - 在 k8s 集群中通过入口公开服务时找不到 404 页面
- javascript - 显示 am4charts.XYChart 中的所有工具提示
- node.js - 使用 node.js 通过 Lambda 将图像上传到 Cloudinary
- couchbase - 更改 couchbase 的日志文件位置
- typing - Microsoft Teams 应用程序,键入指示器持续时间
- rest - 所有父母的组合孩子的 RESTful 命名约定
- php - 根据 WooCommerce 年度订单数更改用户角色