Node.js 基于路由的日志请求方法

Node.js 基于路由的日志请求方法,node.js,express,Node.js,Express,对于我的NodeJs项目,我使用Express路由器。我创建了一个路由器.js module.exports = (app) => { app.use('/', require('./routes/home.js')); app.use('/contact', require('./routes/contact.js')); app.use('/imprint', require('./routes/imprint.js')); }; const express

对于我的NodeJs项目,我使用Express路由器。我创建了一个路由器.js

module.exports = (app) => {
    app.use('/', require('./routes/home.js'));
    app.use('/contact', require('./routes/contact.js'));
    app.use('/imprint', require('./routes/imprint.js'));
};
const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
    res.render('contact', { // render contact.hbs
        title: 'Contact' // pass in some template variables
    });
});

module.exports = router;
在我的app.js中,我需要这个文件
require('./server/router.js')(app)。调用路由时,例如
/contact
我需要contact.js

module.exports = (app) => {
    app.use('/', require('./routes/home.js'));
    app.use('/contact', require('./routes/contact.js'));
    app.use('/imprint', require('./routes/imprint.js'));
};
const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
    res.render('contact', { // render contact.hbs
        title: 'Contact' // pass in some template variables
    });
});

module.exports = router;
router.get
中,我可以使用
console.log(req.method)
来记录HTTP方法。目前,我将不得不在所有路由器文件中记录这一点。有没有可能把代码放在像这样的地方

module.exports = (app) => {
    console.log(req.method); // Log the request method for all routes

    app.use('/', require('./routes/home.js'));
    app.use('/contact', require('./routes/contact.js'));
    app.use('/imprint', require('./routes/imprint.js'));
};

请提供不安装中间件的解决方案。我知道有很多日志记录程序。

您可以在node.js中使用下面的HTTP请求日志记录程序中间件,而无需在代码中添加任何内容。只需在主应用程序中配置它,它就能完成所有工作


如果要避免安装中间件并使用
console.log
,可以按如下方式更改代码:

module.exports = (app) => {
    app.use((req, res, next) => {
       console.log('Request Type:', req.method);
       console.log('Time:', Date.now());
       next();
    })

    app.use('/', require('./routes/home.js'));
    app.use('/contact', require('./routes/contact.js'));
    app.use('/imprint', require('./routes/imprint.js'));
};

如果您没有指定路由,但有
next
回调,那么它将首先执行您的日志代码,然后执行匹配的路由(如果有)。您可以在的“使用中间件”部分找到更多详细信息。

这真的很好,但我想我只需要这个请求日志,所以您知道不安装中间件的方法吗?