在Node.js中,您可以使用中间件(例如morgan
)来记录API请求的详细信息。以下是如何使用morgan
和winston
(一个流行的日志库)来记录API请求详情的步骤:
express
、morgan
和winston
。如果没有,请运行以下命令安装:npm install express morgan winston
logger.js
的文件,用于配置winston
日志记录器:const { createLogger, format, transports } = require('winston');
const logger = createLogger({
level: 'info',
format: format.combine(
format.timestamp(),
format.printf(({ timestamp, level, message }) => {
return `${timestamp} ${level}: ${message}`;
})
),
transports: [
new transports.Console(),
new transports.File({ filename: 'logs/api.log' }),
],
});
module.exports = logger;
这将创建一个winston
记录器,将日志输出到控制台和一个名为api.log
的文件中。
app.js
)中,引入morgan
和logger
,并使用morgan
中间件记录API请求详情:const express = require('express');
const morgan = require('morgan');
const logger = require('./logger');
const app = express();
// 配置morgan中间件
app.use(
morgan('combined', {
stream: {
write: (message) => {
logger.info(message.trim());
},
},
})
);
// 示例API路由
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.get('/api/data', (req, res) => {
res.json({ data: 'Some data' });
});
// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
现在,每当有API请求发生时,morgan
都会记录请求的详细信息,包括时间戳、HTTP方法、URL、响应状态码等。这些信息将被发送到winston
记录器,并输出到控制台和api.log
文件中。
您可以根据需要调整morgan
的格式字符串以记录更多或更少的信息。有关morgan
可用格式的详细信息,请参阅官方文档。