linux

Node.js日志中网络请求分析

小樊
40
2025-07-14 10:25:01
栏目: 编程语言

在Node.js中,可以使用第三方库来分析和记录网络请求。这里推荐使用morganwinston这两个库。morgan是一个HTTP请求记录器中间件,而winston是一个灵活的日志库。下面是如何使用这两个库来分析Node.js中的网络请求日志。

  1. 首先,确保已经安装了morganwinston库。如果没有,请使用以下命令安装:
npm install morgan winston
  1. 在你的Node.js应用中引入这两个库:
const morgan = require('morgan');
const winston = require('winston');
  1. 创建一个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和控制台。

  1. 使用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方法。

  1. 启动你的Node.js应用,现在你应该能在logs/combined.log文件中看到网络请求的详细日志。

这只是一个简单的示例,你可以根据自己的需求调整日志级别、格式和输出目标。更多关于morganwinston的信息,请参考官方文档:

0
看了该问题的人还看了