温馨提示×

Linux环境下Swagger如何实现API请求日志记录

小樊
42
2025-12-29 17:15:40
栏目: 智能运维

在Linux环境下,使用Swagger实现API请求日志记录可以通过以下步骤完成:

  1. 安装Swagger: 确保你的项目中已经集成了Swagger。如果还没有集成,可以使用以下命令安装Swagger:

    npm install swagger-ui-express --save
    
  2. 配置Swagger: 在你的项目中配置Swagger,以便生成API文档。通常,这涉及到创建一个Swagger配置文件(例如swagger.js):

    const swaggerUi = require('swagger-ui-express');
    const swaggerDocument = require('./swagger.json');
    
    const app = express();
    
    app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
    
    const PORT = process.env.PORT || 3000;
    app.listen(PORT, () => {
      console.log(`Server is running on port ${PORT}`);
    });
    
  3. 集成日志记录: 使用一个日志库(例如morgan)来记录API请求日志。首先,安装morgan

    npm install morgan --save
    

    然后,在你的Express应用中配置morgan来记录请求日志:

    const express = require('express');
    const morgan = require('morgan');
    const app = express();
    
    // 配置morgan日志格式
    morgan.token('customFormat', function (req, res) {
      return `${req.method} ${req.url} ${res.statusCode}`;
    });
    
    // 使用morgan记录请求日志
    app.use(morgan('customFormat'));
    
    // 其他中间件和路由配置
    app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
    
    const PORT = process.env.PORT || 3000;
    app.listen(PORT, () => {
      console.log(`Server is running on port ${PORT}`);
    });
    
  4. 自定义日志记录: 如果你需要更详细的日志记录,可以自定义morgan的格式或使用其他日志库(例如winston)来记录日志。以下是使用winston的示例:

    npm install winston --save
    

    然后,在你的项目中配置winston来记录请求日志:

    const express = require('express');
    const morgan = require('morgan');
    const winston = require('winston');
    const app = express();
    
    // 配置winston日志记录器
    const logger = winston.createLogger({
      level: 'info',
      format: winston.format.json(),
      transports: [
        new winston.transports.File({ filename: 'error.log', level: 'error' }),
        new winston.transports.File({ filename: 'combined.log' })
      ]
    });
    
    if (process.env.NODE_ENV !== 'production') {
      logger.add(new winston.transports.Console({
        format: winston.format.simple()
      }));
    }
    
    // 使用morgan记录请求日志并传递给winston
    app.use(morgan('combined', { stream: { write: message => logger.info(message.trim()) } }));
    
    // 其他中间件和路由配置
    app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
    
    const PORT = process.env.PORT || 3000;
    app.listen(PORT, () => {
      console.log(`Server is running on port ${PORT}`);
    });
    

通过以上步骤,你可以在Linux环境下使用Swagger实现API请求日志记录。根据你的需求,可以选择合适的日志库和日志格式来记录详细的请求信息。

0