ubuntu

如何配置Node.js日志轮转

小樊
46
2025-03-13 23:33:07
栏目: 编程语言
前端开发者专用服务器,限时0元免费领! 查看>>

配置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的日志轮转。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

相关推荐:Node.js日志轮转如何配置

0
看了该问题的人还看了