在Node.js中,可以使用中间件来追踪请求。这里以Express框架为例,介绍如何使用morgan中间件来记录请求日志。
npm install express morgan
const express = require('express');
const morgan = require('morgan');
const app = express();
// 设置日志格式
morgan.token('method', function (req, res) {
return req.method;
});
morgan.token('url', function (req, res) {
return req.url;
});
morgan.token('status', function (req, res) {
return res.statusCode;
});
morgan.token('response-time', function (req, res) {
return res.get('X-Response-Time');
});
app.use(morgan(':method :url :status :response-time ms - :res[content-length]'));
// 其他路由和中间件
// ...
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
上述代码中,我们自定义了morgan的日志格式,包括请求方法、URL、状态码、响应时间和响应内容长度。你可以根据需要自定义日志格式。
现在,每当有请求进入你的应用时,morgan都会记录相关信息到控制台。如果你想将日志记录到文件中,可以使用morgan
的file
方法:
const fs = require('fs');
const path = require('path');
// 创建日志目录
const logDir = path.join(__dirname, 'logs');
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir);
}
// 将日志输出到文件
app.use(morgan('combined', { stream: { write: message => fs.appendFileSync(path.join(logDir, 'access.log'), message) } }));
这样,所有的请求日志都会被记录到logs/access.log
文件中。你可以根据需要调整日志文件的路径和名称。