如何表达.logger()除GET /favicon.ico之外的所有请求? (的NodeJS / expressjs)

时间:2014-02-21 07:37:12

标签: node.js express

我想记录除favicon.ico之外的所有请求。 起初我想简单地创建一个函数并调用express.logger(),但是在函数内调用express.logger()不起作用。

//DOES NOT LOG
app.use("/", function(req, res, next){
    console.log('executing 1');
    express.logger();
    next();
});

因此我不能使用if语句来检查res.url。

现在我正在尝试以下但我被困住了:

app.use(function(req, res, next){
    if(req.url=="/favicon.ico"){
        //Somehow skip the next app.use
    }else{
        next(); //otherwise just go to next
    }
});

app.use("/", express.logger());

非常感谢!

2 个答案:

答案 0 :(得分:2)

express.logger()函数返回另一个具有快速中间件签名的函数(函数(req,res,next))。调用它不会执行日志记录,只返回记录器中间件。

试试这个 -

app.use(function(req, res, next){
    if(req.url=="/favicon.ico"){
        next();
    }else{
        express.logger()(req, res, next);
    }
});

从代码中删除app.use(express.logger())。

答案 1 :(得分:2)

您可以使用express.favicon中间件,并在包含记录器中间件之前包含该中间件。这实际上是connect.faviconexpress.favicon所基于的)页面上提到的用例:

app.use(express.favicon()); // you can also pass path to favicon file, see docs
app.use(express.logger());

docs