linux

Node.js日志轮转策略如何配置

小樊
33
2025-04-26 13:29:53
栏目: 编程语言

在Node.js中,日志轮转通常是通过第三方库来实现的,比如winstonpino等。这里以winston为例,介绍如何配置日志轮转策略。

首先,确保已经安装了winstonwinston-daily-rotate-file这两个库:

npm install winston winston-daily-rotate-file

接下来,创建一个logger.js文件,并按照以下方式配置日志轮转策略:

const { createLogger, format, transports } = require('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.errors({ stack: true }),
    format.splat(),
    format.json()
  ),
  transports: [
    new transports.Console(),
    new DailyRotateFile({
      filename: 'logs/application-%DATE%.log', // 日志文件名格式,%DATE%将被替换为当前日期
      datePattern: 'YYYY-MM-DD', // 日志文件名中的日期格式
      zippedArchive: true, // 是否将旧日志文件压缩
      maxSize: '20m', // 单个日志文件的最大尺寸,超过此尺寸将创建新的日志文件
      maxFiles: '14d' // 保留日志文件的天数,超过此天数的日志文件将被删除
    })
  ]
});

module.exports = logger;

现在,你可以在其他Node.js文件中引入并使用这个logger实例:

const logger = require('./logger');

logger.info('Hello, world!');

这样配置后,日志文件将按照指定的策略进行轮转。每天生成一个新的日志文件,并且单个日志文件的最大尺寸为20MB。超过20MB的日志文件将被压缩并创建新的日志文件。同时,保留最近14天的日志文件,超过14天的日志文件将被删除。

0
看了该问题的人还看了