温馨提示×

nodejs日志ubuntu如何轮

小樊
44
2026-09-12 10:48:34
栏目: 编程语言

在 Ubuntu 上让 Node.js 日志实现“轮转(rotate)”,常见有几种方式,从最简单到最规范给你列一下。


一、最推荐:用 Ubuntu 自带的 logrotate(无需改代码)

1. 示例:Node.js 输出日志到文件

node app.js >> /var/log/myapp/app.log 2>&1

2. 创建 logrotate 配置

sudo vim /etc/logrotate.d/myapp

内容示例:

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

3. 关键参数说明

  • daily:每天轮转
  • rotate 14:保留 14 份
  • compress:压缩旧日志
  • copytruncate:不重启 Node.js 也能生效(很重要)

4. 手动测试

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

✅ 优点:稳定、系统级、不改业务代码
✅ 适合:生产环境


二、Node.js 代码内建日志轮转(不依赖系统)

使用 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({
  dirname: '/var/log/myapp',
  filename: 'app-%DATE%.log',
  datePattern: 'YYYY-MM-DD',
  maxFiles: '14d',
  zippedArchive: true
});

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

logger.info('hello');

✅ 自动按天切
✅ 自动压缩
❌ 需要改代码


三、使用 PM2(如果你用 PM2 跑 Node)

PM2 自带日志管理:

pm2 install pm2-logrotate

配置:

pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 14

✅ 简单
✅ 适合 PM2 用户


四、不推荐但可用:log4js

npm install log4js

支持 DateFileAppender,但配置稍复杂。


总结建议

场景 推荐方案
生产服务器 ✅ logrotate
不想动系统 winston-daily-rotate-file
用 PM2 pm2-logrotate
Docker 容器外 logrotate 或 logging driver

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

  • Node 怎么启动的(直接 / PM2 / Docker)
  • 日志路径
  • 是否允许重启进程

我可以给你 完全可复制的配置。

0 踩