温馨提示×

怎样压缩Linux Nodejs日志

小樊
39
2026-08-29 00:59:20
栏目: 编程语言

在 Linux 下压缩 Node.js 日志,常见做法有 手动压缩、定时自动压缩、日志库自带轮转 三种。下面按实用程度给你一个完整方案。


一、最常用方案(推荐):logrotate 自动压缩

这是 生产环境最推荐 的方式。

1️⃣ 安装 logrotate(一般都自带)

which logrotate

2️⃣ 创建 Node.js 日志配置

sudo vim /etc/logrotate.d/nodejs

示例配置:

/var/log/nodejs/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0644 node node
    copytruncate
}

参数说明

参数 作用
daily 每天轮转
rotate 7 保留 7 份
compress 用 gzip 压缩
delaycompress 下次再压缩(防止正在写)
copytruncate 不重启 Node.js
missingok 日志不存在不报错

优点

  • 自动压缩
  • 不需要改 Node.js 代码
  • 生产环境标准方案

二、手动压缩已有日志(应急)

gzip app.log

或批量压缩:

gzip *.log

解压:

gunzip app.log.gz

⚠️ 风险:Node.js 可能还在写文件,建议先停服务或 copytruncate


三、Node.js 代码中控制日志(Winston / Pino)

✅ Winston + winston-daily-rotate-file(推荐)

npm install winston winston-daily-rotate-file
const winston = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');

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

const logger = winston.createLogger({
  transports: [transport]
});

✅ 自动:

  • 按天切分
  • gzip 压缩
  • 自动删除旧日志

四、PM2 用户(最简单)

pm2 install pm2-logrotate

配置:

pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:compress true
pm2 set pm2-logrotate:retain 7

✅ 自动压缩 + 轮转


五、磁盘 & 清理建议

查看日志大小:

du -sh /var/log/nodejs

清理旧日志:

find /var/log/nodejs -name "*.gz" -mtime +30 -delete

六、选型建议(直接照着用)

场景 推荐方案
生产环境 ✅ logrotate
PM2 ✅ pm2-logrotate
自定义日志 ✅ Winston + rotate
临时处理 gzip

如果你愿意,可以告诉我:

  • 用的是什么日志库(Winston / Pino / console)
  • 是否使用 PM2
  • 日志路径

我可以 直接帮你写一份可用的配置文件

0