Morgan Logger与Express.js只logging失败的请求
我使用Morgan和Express.js,我认为我的中间件有问题,因为Morgan只logging返回错误302(redirect)的请求,当我的中间件发现错误并redirect到错误页面时发生。
我对Express.js是一个全新的中间件爵士乐,所以我非常感谢任何帮助。 谢谢!
var http = require('http') , express = require('express') , app = express() , logger = require('morgan'); app.use(express.static(__dirname + '/public')); app.use(logger()); var server = http.createServer(app); server.listen(8888); // Handle 404 app.use(function(req, res) { res.status(404).redirect('/error/404.html'); }); // Handle 500 app.use(function(error, req, res, next) { res.status(500).redirect('/error/500.html'); });
在“开始工作”方面,下面的代码将为404做到这一点。
我没有回答关于其他响应代码的任何事情,把这些留给你。 🙂
让它工作
我改变的一个总结:
- 我删除了
'http'
和var server = http.createServer(app);
的依赖关系var server = http.createServer(app);
因为那些不是真的需要 - 我把
app.listen
移到了最后…所以它在所有快速configuration完成后都会侦听。 - 我使用
.sendfile()
方法,而不是.redirect()
因为我们只是发送状态的东西
这工作在我的系统上。 如果您对代码有疑问或者有问题,请发表评论,我会尽我所能帮助…但是我不能在评论中承诺创造奇迹。 🙂
var express = require('express'); var app = express(); var logger = require('morgan'); // edited, moving `app.use(logger());` first so it can log everything... app.use(logger()); app.use(express.static(__dirname + '/public')); // Handle 404 app.use(function(req, res, next) { res.status(404).sendfile('./error/404.html'); }); app.listen(8888);
快速抛开:
我的猜测是,你的代码中的一些问题是基于这样一个事实,即许多快速教程/指南是为v.3.x编写的,但是v.4.x中的变化足够大,以至于不容易什么可能仍然有效,什么不可以。
例如,你只能使用morgan
与一个快速v.4.x应用程序,但在你的代码看起来好像他们来自一个v.3.x应用程序/示例/教程。 当我开始的时候,同样的东西正在从v.2.x移到v.3.x …所以是的。 我感到你的痛苦。