Node.js日志轮转如何配置

121
2025/3/30 3:32:35
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在 Node.js 应用程序中,可以使用第三方库 winstonwinston-daily-rotate-file 来实现日志轮转。以下是如何配置这两个库的步骤:

  1. 首先,确保已经安装了 winstonwinston-daily-rotate-file。如果没有,请使用以下命令安装:
npm install winston winston-daily-rotate-file
  1. 在你的 Node.js 应用程序中,创建一个名为 logger.js 的文件,并添加以下代码:
const winston = require('winston');
const { format } = winston;
const DailyRotateFile = require('winston-daily-rotate-file');

const transport = new DailyRotateFile({
  filename: 'logs/application-%DATE%.log',
  datePattern: 'YYYY-MM-DD-HH',
  zippedArchive: true,
  maxSize: '20m',
  maxFiles: '14d'
});

const logger = winston.createLogger({
  level: 'info',
  format: format.combine(
    format.timestamp({
      format: 'YYYY-MM-DD HH:mm:ss'
    }),
    format.errors({ stack: true }),
    format.splat(),
    format.json()
  ),
  transports: [
    transport
  ]
});

if (process.env.NODE_ENV !== 'production') {
  logger.add(new winston.transports.Console({
    format: format.combine(
      format.colorize(),
      format.simple()
    )
  }));
}

module.exports = logger;

在这个配置中,我们定义了一个名为 transportDailyRotateFile 实例,它负责处理日志文件的轮转。以下是一些重要的配置选项:

  • filename: 日志文件的基本名称。
  • datePattern: 用于生成日志文件名的日期格式。
  • zippedArchive: 是否将旧的日志文件压缩为 ZIP 文件。
  • maxSize: 单个日志文件的最大大小。
  • maxFiles: 保留的日志文件的最大数量。

我们还定义了一个名为 loggerwinston.Logger 实例,并将 transport 添加到其传输器数组中。此外,我们还添加了一个控制台传输器,以便在非生产环境中输出日志。

  1. 在你的应用程序中使用 logger.js 文件:
const logger = require('./logger');

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

现在,当你的应用程序运行时,日志将按照配置的轮转策略自动轮转。

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

推荐阅读: SQL Server在Ubuntu上的备份与恢复最佳实践