温馨提示×

debian js日志怎样分割

小樊
33
2026-09-16 08:53:55
栏目: 编程语言

在 Debian 上处理 JS(Node.js)应用日志分割,常见做法有几种,下面从简单到专业给你梳理一下。


一、最常用:用 logrotate(推荐)

Debian 自带 logrotate,适合任何文本日志文件

示例:Node.js 日志分割

假设日志路径:

/var/log/myapp/app.log

1. 创建 logrotate 配置

sudo nano /etc/logrotate.d/myapp

内容示例:

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

参数说明

  • daily:每天分割
  • rotate 14:保留 14 天
  • compress:压缩旧日志
  • copytruncate不重启 Node.js 也能继续写日志(很重要)

2. 手动测试

sudo logrotate -d /etc/logrotate.d/myapp
sudo logrotate -f /etc/logrotate.d/myapp

适合:PM2、forever、裸 node 启动的日志


二、Node.js 自身按大小/时间分割(代码级)

如果你不想依赖系统工具,可以用日志库:

1. winston + winston-daily-rotate-file

npm install winston winston-daily-rotate-file
const { createLogger, transports } = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');

const logger = createLogger({
  transports: [
    new DailyRotateFile({
      filename: '/var/log/myapp/app-%DATE%.log',
      datePattern: 'YYYY-MM-DD',
      maxFiles: '14d',
      zippedArchive: true
    })
  ]
});

适合:需要精细控制格式、级别


三、PM2 用户专用

如果你用 PM2

pm2 install pm2-logrotate

配置:

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

最简单,但只适合 PM2 管理的应用


四、不建议的做法

❌ 自己写 setInterval 切文件
❌ 用 >> 重定向不轮转(会无限变大)


推荐总结

场景 推荐方案
生产环境通用 ✅ logrotate
PM2 管理 ✅ pm2-logrotate
需要复杂日志 ✅ winston

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

  • 用的 Node 版本
  • 启动方式(pm2 / docker / systemd)
  • 日志路径

我可以帮你写完整可直接用的配置

0