linux

Node.js日志中如何记录API请求详情

小樊
49
2025-05-16 17:50:11
栏目: 编程语言

在Node.js中,您可以使用中间件(例如morgan)来记录API请求的详细信息。以下是如何使用morganwinston(一个流行的日志库)来记录API请求详情的步骤:

  1. 首先,确保您已经安装了expressmorganwinston。如果没有,请运行以下命令安装:
npm install express morgan winston
  1. 创建一个名为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的文件中。

  1. 在您的主应用文件(例如app.js)中,引入morganlogger,并使用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可用格式的详细信息,请参阅官方文档

0
看了该问题的人还看了