温馨提示×

linux js日志怎么轮转

小樊
38
2026-10-05 12:29:13
栏目: 编程语言

在 Linux 上,JS 应用日志的轮转通常和「日志怎么产生」「用什么跑 JS」有关。下面按常见场景给你讲清楚。


一、最常见方案:用 logrotate(推荐)

不管你是 Node.js 还是前端构建日志,只要日志是写文件,就用 logrotate。

1. 示例(Node.js 日志)

假设日志路径:

/var/log/myapp/app.log

新建配置:

sudo vim /etc/logrotate.d/myapp

内容:

/var/log/myapp/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}

2. 关键参数说明

  • daily:每天轮转
  • rotate 7:保留 7 份
  • compress:压缩旧日志
  • copytruncate:不重启进程,直接截断文件(Node 常用)
  • notifempty:空文件不轮转

3. 测试

logrotate -d /etc/logrotate.d/myapp  # 模拟
logrotate -f /etc/logrotate.d/myapp  # 强制

✅ 适合:pm2、node 直接跑、docker 外挂日志


二、Node.js + PM2(非常常见)

PM2 自带日志,但不自动压缩。

1. 用 PM2 自带

pm2 install pm2-logrotate

配置:

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

✅ 简单,但功能比 logrotate 弱


三、Docker 中的 JS 日志

如果是容器:

1. 用 Docker 日志驱动

docker run \
  --log-driver json-file \
  --log-opt max-size=10m \
  --log-opt max-file=5 \
  node app

2. 或挂宿主机 + logrotate

-v /var/log/myapp:/app/logs

然后宿主机用 logrotate


四、JS 代码层轮转(不推荐)

如 winston、pino 支持:

require('pino-roll')

✅ 可控
❌ 增加应用复杂度


五、推荐结论

场景 推荐
服务器 Node 服务 logrotate
PM2 管理 pm2-logrotate
Docker docker log-opt
多服务统一 logrotate

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

  • 用的是 Node / Nuxt / Next / 前端构建
  • 日志路径
  • 是否用 PM2 / Docker

我可以直接给你一份可用配置。

0 踩