在Node.js中,可以使用第三方库来分析和记录网络请求。这里推荐使用morgan和winston这两个库。morgan是一个HTTP请求记录器中间件,而winston是一个灵活的日志库。下面是如何使用这两个库来分析Node.js中的网络请求日志。
morgan和winston库。如果没有,请使用以下命令安装:npm install morgan winston
const morgan = require('morgan');
const winston = require('winston');
winston.Logger实例,用于记录日志:const logger = new winston.Logger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'logs/combined.log' }),
new winston.transports.Console({
format: winston.format.simple(),
}),
],
});
这里,我们将日志级别设置为info,并将日志同时输出到文件logs/combined.log和控制台。
morgan中间件记录HTTP请求日志,并将其传递给winston.Logger实例:const express = require('express');
const app = express();
// 自定义morgan格式
morgan.token('customFormat', (req, res) => {
return `${req.method} ${req.url} ${res.statusCode} ${res.responseTime}ms - ${req.userAgent}`;
});
app.use(morgan('customFormat', { stream: { write: (message) => logger.info(message.trim()) } }));
// 其他路由和中间件
这里,我们自定义了一个morgan格式,包括请求方法、URL、状态码、响应时间和用户代理。然后,我们将morgan的输出重定向到winston.Logger实例的info方法。
logs/combined.log文件中看到网络请求的详细日志。这只是一个简单的示例,你可以根据自己的需求调整日志级别、格式和输出目标。更多关于morgan和winston的信息,请参考官方文档: