【发布时间】:2014-06-22 07:00:25
【问题描述】:
我是 Node 和 Sails 的新手,已经为这个问题苦苦挣扎了几个星期。我需要记录(最终记录到文件或数据库)我们 Sails 应用程序中发生的所有错误。我找到了几个接近解决这个问题的答案,但似乎没有一个是 100% 有效的。我根据this question的答案设置了一些东西
使用 Sails v0.9.16 时,我在 config/500.js 文件中设置了日志记录,但使用测试代码时...
t.t;
... 在我的控制器中,Sails 只打印出“ReferenceError: t is not defined”。它永远不会去 500.js。在 Sails v0.10.0-rc5 中,相同的测试代码将到达我的自定义 500 中间件(如下所示)。
问题出在 Sails v0.10.0-rc5 中,似乎中间件路由器在访问我的自定义 400 中间件之前处理了 400 错误消息。
我们还没有承诺我们将使用哪个版本,但是让这个版本在其中一个或另一个中工作可能会让我们下定决心。
那么我如何得到所有发生的错误呢?如果我走在正确的轨道上,那么我缺少什么才能让它发挥作用?
提前致谢!
v0.9.16 的代码不多...除了在 500.js 文件中添加sails.log 之外,我认为我没有进行任何更改...
下面是 v0.10.0-rc5 的自定义中间件设置 ...
loadMiddleware: function(app, defaultMiddleware, sails) {
// Use the middleware in the correct order
app.use(defaultMiddleware.startRequestTimer);
app.use(defaultMiddleware.cookieParser);
app.use(defaultMiddleware.session);
app.use(defaultMiddleware.bodyParser);
app.use(defaultMiddleware.handleBodyParserError);
app.use(defaultMiddleware.methodOverride);
app.use(defaultMiddleware.poweredBy);
app.use(defaultMiddleware.router); //400s do not make it past this...
app.use(defaultMiddleware.www);
app.use(defaultMiddleware.favicon);
app.use(function(req, res, next ) {
sails.log("400 error caught in middleware - " + err.stack);
next();
});
app.use(function(err, req, res, next){
sails.log("500 error caught in middleware - " + err.stack);
next(err);
});
}
【问题讨论】: