温馨提示×

Linux Node.js日志轮转怎么做

小樊
40
2025-11-09 16:24:18
栏目: 编程语言

在Linux系统中,日志轮转是一种常见的管理日志文件的方法,它可以防止日志文件过大,同时保留一定时间的日志记录。对于Node.js应用程序,你可以使用一些流行的日志库(如winston、bunyan等)来实现日志轮转。

以下是使用winston库实现日志轮转的方法:

  1. 首先,确保你已经安装了winston库。如果没有,请运行以下命令安装:
npm install winston
  1. 在你的Node.js应用程序中,引入winston并创建一个日志记录器:
const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
    new winston.transports.File({ filename: 'logs/combined.log' })
  ]
});
  1. 为了实现日志轮转,你需要安装winston-daily-rotate-file库:
npm install winston-daily-rotate-file
  1. 更新你的日志记录器配置,使用winston-daily-rotate-file
const winston = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');

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

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

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    errorLogger,
    combinedLogger
  ]
});

在这个例子中,我们使用了winston-daily-rotate-file库来创建两个新的日志记录器:errorLoggercombinedLogger。这两个记录器都会在每天生成一个新的日志文件,并根据maxSizemaxFiles选项来控制日志文件的大小和保留时间。

现在,你的Node.js应用程序将自动进行日志轮转,每天生成新的日志文件,并在一定时间后删除旧的日志文件。

0