溫馨提示×

如何配置Node.js日志輪轉

小樊
83
2025-03-13 23:33:07
欄目: 編程語言

配置Node.js日志輪轉可以通過多種方式實現,以下是幾種常見的方法:

方法一:使用 winstonwinston-daily-rotate-file

winston 是一個非常流行的Node.js日志庫,結合 winston-daily-rotate-file 可以實現日志的每日輪轉。

  1. 安裝依賴

    npm install winston winston-daily-rotate-file
    
  2. 配置 winston: 創建一個日志配置文件,例如 logger.js

    const winston = require('winston');
    const { createLogger, format, transports } = winston;
    const DailyRotateFile = require('winston-daily-rotate-file');
    
    const logger = createLogger({
      level: 'info',
      format: format.combine(
        format.timestamp({
          format: 'YYYY-MM-DD HH:mm:ss'
        }),
        format.printf(({ timestamp, level, message }) => {
          return `${timestamp} ${level}: ${message}`;
        })
      ),
      transports: [
        new DailyRotateFile({
          filename: 'application-%DATE%.log',
          datePattern: 'YYYY-MM-DD',
          zippedArchive: true,
          maxSize: '20m',
          maxFiles: '14d'
        })
      ]
    });
    
    module.exports = logger;
    
  3. 使用日志記錄器: 在你的應用中使用這個日志記錄器:

    const logger = require('./logger');
    
    logger.info('This is an info message');
    logger.error('This is an error message');
    

方法二:使用 morganmorgan-body-parser

如果你使用的是Express框架,可以結合 morganmorgan-body-parser 來實現日志輪轉。

  1. 安裝依賴

    npm install morgan morgan-body-parser
    
  2. 配置 morgan: 創建一個中間件來處理日志輪轉:

    const express = require('express');
    const morgan = require('morgan');
    const { createLogger, format, transports } = winston;
    const DailyRotateFile = require('winston-daily-rotate-file');
    
    const app = express();
    
    const logger = createLogger({
      level: 'info',
      format: format.combine(
        format.timestamp({
          format: 'YYYY-MM-DD HH:mm:ss'
        }),
        format.printf(({ timestamp, level, message }) => {
          return `${timestamp} ${level}: ${message}`;
        })
      ),
      transports: [
        new DailyRotateFile({
          filename: 'access-%DATE%.log',
          datePattern: 'YYYY-MM-DD',
          zippedArchive: true,
          maxSize: '20m',
          maxFiles: '14d'
        })
      ]
    });
    
    app.use(morgan('combined', { stream: { write: message => logger.info(message.trim()) } }));
    
    app.post('/example', (req, res) => {
      res.send('Example endpoint');
    });
    
    app.listen(3000, () => {
      logger.info('Server is running on port 3000');
    });
    

方法三:使用 pm2 的日志管理功能

如果你使用 pm2 來管理Node.js應用,可以利用其內置的日志管理功能來實現日志輪轉。

  1. 啟動應用

    pm2 start app.js --name my-app
    
  2. 配置日志輪轉pm2 默認會自動處理日志輪轉,但你可以通過以下命令來配置日志文件的大小和保留天數:

    pm2 set pm2:log-date-format "YYYY-MM-DD HH:mm:ss"
    pm2 set pm2:max-size "20M"
    pm2 set pm2:retain "14d"
    

通過以上幾種方法,你可以根據具體需求選擇合適的方式來配置Node.js的日志輪轉。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女