温馨提示×

Node.js日志中请求跟踪方法

小樊
59
2025-08-16 10:36:27
栏目: 编程语言

在Node.js中,可通过中间件和日志库实现请求跟踪,以下是具体方法:

  1. 使用Express中间件(如morgan)

    • 安装:npm install morgan
    • 配置:在应用中引入并设置日志格式,可记录请求方法、URL、状态码、响应时间等。
      const morgan = require('morgan');  
      app.use(morgan(':method :url :status :response-time ms')); // 自定义格式  
      
    • 输出到文件:通过stream参数将日志写入文件。
  2. 结合日志库(如winston)

    • 安装:npm install winston
    • 配置:创建日志记录器,支持多级日志(info/error等)、JSON格式及文件输出。
      const winston = require('winston');  
      const logger = winston.createLogger({  
        level: 'info',  
        format: winston.format.json(),  
        transports: [new winston.transports.File({ filename: 'logs/request.log' })]  
      });  
      
    • 在中间件中记录请求信息:
      app.use((req, res, next) => {  
        logger.info({ method: req.method, url: req.url, traceId: req.headers['x-trace-id'] });  
        next();  
      });  
      
  3. 请求链路追踪(TraceID)

    • 在中间件中生成唯一ID(如UUID),注入请求对象,贯穿整个请求生命周期。
      const { v4: uuidv4 } = require('uuid');  
      app.use((req, res, next) => {  
        req.traceId = uuidv4(); // 添加到请求头或上下文  
        next();  
      });  
      
    • 日志中携带TraceID,便于关联同一请求的多条日志。

参考来源

0