首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只记录失败请求的Morgan

只记录失败请求的Morgan
EN

Stack Overflow用户
提问于 2014-06-15 19:57:00
回答 1查看 5.3K关注 0票数 1

我在Express.js中使用摩根,我认为我的中间件有问题,因为Morgan只记录返回错误302 (重定向)的请求,当我的中间件捕获错误并重定向到它的错误页面时就会发生这种情况。

我对Express.js (所有的中间件爵士乐)都很陌生,所以我非常感谢您的帮助。谢谢!

代码语言:javascript
复制
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');
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-15 23:41:26

在“让它工作”方面,下面的代码将对404执行此操作。

我没有回答任何关于其他反应代码的问题,把这个留给你。:)

让它开始工作

我所做的改变的总结:

  1. 我删除了对'http'var server = http.createServer(app);的依赖,因为它们并不是真正需要的
  2. 我将app.listen移动到它所监听的end...so,在所有快速配置完成之后。
  3. 我使用的是.sendfile()方法而不是.redirect(),因为我们只是在发送状态信息

这对我的系统有效。如果您对代码有疑问或有问题,请留下评论,我会帮助您,因为我是able...but,我不能保证在评论中出现奇迹。:)

代码语言:javascript
复制
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的同时使用express v.4.x应用程序,但是代码中的一些内容看起来像是来自v.3.x应用程序/示例/教程。当我开始的时候,同样的事情正在发生,就像快递从v.2.x转移到v.3.x...so一样。我感觉到你的痛苦。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24233560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档