商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Node.js日志轮转怎么设置

Node.js日志轮转怎么设置

  发布于2026-07-12 阅读(0)

扫一扫,手机访问

日志管理是 Node.js 应用运维中一个绕不开的话题,尤其是当生产环境跑上几天、几周后,日志文件膨胀起来,不仅占用磁盘,还让排查问题变得痛苦。这时候,日志轮转就成了刚需——自动切割、归档、清理,一套流程下来省心省力。好在社区里已经有非常成熟的方案,winston 搭配 winston-daily-rotate-file 就是目前最主流的做法之一。下面直接来看具体怎么配置。

Node.js日志轮转怎么设置

  1. 首先确保装了这两个包。如果项目里还没有,直接执行:
npm install winston winston-daily-rotate-file
  1. 然后在代码里引入它们:
const winston = require('winston');
const { DailyRotateFile } = require('winston-daily-rotate-file');
  1. 接下来创建 logger 实例,这是核心部分。关键在于配置 DailyRotateFile 的 transport 选项:
const logger = new winston.Logger({
  level: 'info',
  format: winston.format.combine(
    winston.format.timestamp(),
    winston.format.printf(({ timestamp, level, message }) => {
      return `${timestamp} ${level}: ${message}`;
    })
  ),
  transports: [
    new DailyRotateFile({
      filename: 'logs/application-%DATE%.log',  // 文件名中嵌入日期
      datePattern: 'YYYY-MM-DD',               // 按天轮转
      zippedArchive: true,                      // 轮转后压缩归档
      maxSize: '20m',                           // 单个文件最大20MB
      maxFiles: '14d'                           // 只保留最近14天的日志
    })
  ]
});

这里几个参数值得留意:datePattern 决定了按什么粒度轮转,按天是最常见的;maxSize 可以在文件还没到日期轮转点但已经超限时提前触发切割;maxFiles 则控制历史保留时长,避免磁盘被旧日志填满。另外,zippedArchive: true 会自动把切下来的文件打包成 gz,对节省空间很有帮助。

  1. 最后就是正常使用 logger 记录日志:
logger.info('Hello, world!');

这样配置好之后,每天零点左右,应用会自动生成一个新的日志文件,旧文件会被压缩并保留14天。如果某一天日志量特别大,单个文件增长到20MB,也会提前触发轮转。整个过程完全自动化,开发者只需要关注业务逻辑即可。

本文转载于:https://www.yisu.com/ask/57352304.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注