在 Debian 上压缩 JS(JavaScript)日志,常见做法有几种,取决于你的日志来源、是否实时写入、是否要轮转。下面按常见场景给你讲清楚。
gzip 手动压缩(最简单)适合:已经生成好的 .log 文件
gzip app.js.log
会生成:
app.js.log.gz
解压:
gunzip app.js.log.gz
✅ 优点:简单
❌ 缺点:不能自动处理正在写入的日志
logrotate(推荐 ✅)Debian 自带 logrotate,最适合 JS 服务(Node / PM2 / Nginx 等)
sudo nano /etc/logrotate.d/myjsapp
示例(Node.js 日志):
/var/log/myapp/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
copytruncate
}
说明:
compress → 用 gzip 压缩copytruncate → 不重启进程也能截断日志(JS 常用)rotate 7 → 保留 7 天sudo logrotate -d /etc/logrotate.d/myjsapp
强制执行:
sudo logrotate -f /etc/logrotate.d/myjsapp
pm2 install pm2-logrotate
配置示例:
pm2 set pm2-logrotate:compress true
pm2 set pm2-logrotate:retain 7
✅ PM2 会自动压缩旧日志为 .log.gz
如果你必须边写边压,可用:
node app.js | gzip > app.log.gz
❌ 不便排查问题,一般不建议
/var/log/myapp/~/.pm2/logs//var/log/nginx/| 场景 | 推荐方式 |
|---|---|
| 普通 JS 服务 | logrotate ✅ |
| PM2 | pm2-logrotate ✅ |
| 临时压缩 | gzip |
| 正在写入日志 | copytruncate |
如果你是 Node / PM2 / Nginx / Docker 哪一种,我可以给你精准配置示例。