在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
的信息,請參考官方文檔: