提问者:小点点

ExpressJS日志中间件


我想创建一个中间件来在我的数据库中保存日志。

但是在我下面的中间件中,任何URL都是保存的,我不想保存“favicon.ico”,比如“src of images..”。我只想保存由用户触发的URL和帖子。

  server.app.use(function(request, response, next) {

    LogModel.create({
      type: request.method,
      url: response.statusCode + ' : ' + request.url
    }).then(function() {
      console.log(colors.green('URL : ' + request.originalUrl));
    });
    next();
  });

结果:

预期结果:


共1个答案

匿名用户

当然,您可以在中间件中手动检查请求路径,并通过调用跳过特定路径的逻辑。另一种选择是使用像Express-Envirs这样的包,它允许您用各种选项控制中间件。在您的情况下,您可以指定要跳过的路径:

const unless = require('express-unless');
const app = express();

const loggingMiddleware = (req, res, next) => {
    LogModel.create(...);
    next();
};
loggingMiddleware.unless = unless;

app.use(loggingMiddleware.unless({
    path: [
        '/favicon.ico' // add more paths if needed
    ]
}));

相关问题