在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
的信息,请参考官方文档: