ubuntu

Ubuntu下Node.js日志分割技巧

小樊
55
2025-07-15 02:49:03
栏目: 编程语言

在Ubuntu系统中,使用Node.js应用程序时,日志分割是一个重要的任务,可以帮助你管理日志文件的大小和数量,避免日志文件过大导致的磁盘空间不足问题。以下是一些常见的方法来切割Node.js应用程序的日志:

使用 logrotate 工具

logrotate 是一个系统工具,可以自动切割、压缩和删除旧日志文件。

sudo apt-get update
sudo apt-get install logrotate
sudo nano /etc/logrotate.d/nodejs-app
/path/to/your/nodejs/app/logs/*.log {
  daily rotate 7
  compress
  delaycompress
  missingok
  notifempty
  create 0640 root adm
}
sudo logrotate -f /etc/logrotate.d/nodejs-app

在Node.js应用程序中使用日志库

许多Node.js日志库(如 winstonpino 等)都内置了日志切割功能。以下是使用 winston 的示例:

npm install winston winston-daily-rotate-file
const winston = require('winston');
const { combine, timestamp, printf } = winston.format;
const DailyRotateFile = require('winston-daily-rotate-file');

const myFormat = printf(({ level, message, timestamp }) => {
  return `{timestamp} ${level} : ${message}`;
});

const logger = winston.createLogger({
  level: 'info',
  format: combine(timestamp(), myFormat),
  transports: [
    new DailyRotateFile({
      filename: 'logs/application-%DATE%.log',
      datePattern: 'YYYY-MM-DD-HH',
      zippedArchive: true,
      maxSize: '20m',
      maxFiles: '14d',
    }),
  ],
});

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

通过以上方法,你可以有效地管理和切割Node.js应用程序的日志文件。

0
看了该问题的人还看了