温馨提示×

debian js日志过大怎么办

小樊
40
2026-09-04 02:16:23
栏目: 编程语言

在 Debian 上,JS(Node.js / 前端构建 / 应用日志)日志过大是常见问题,通常可以从定位 → 清理 → 限制增长 → 长期管理几个层面解决。


一、先确认日志在哪里、是谁产生的

1. 查找大日志文件

sudo du -sh /var/log/* 2>/dev/null | sort -h
sudo find / -name "*.log" -size +100M 2>/dev/null

常见位置:

  • /var/log/
  • 应用目录:/srv/, /opt/, ~/project/logs
  • Node 进程输出(pm2 / systemd)

2. 看是否是 JS 应用

ps aux | grep node

常见:

  • Node.js 服务
  • npm / webpack / vite 构建日志
  • PM2 日志

二、临时清理(立刻见效)

1. 清空日志(不删文件)

sudo truncate -s 0 /path/to/logfile.log

2. 删除旧日志

sudo rm -f /path/to/log-2023*.log

⚠️ 删除前确认服务不正在写入该文件


三、限制日志增长(关键)

方案 1:使用 logrotate(推荐 ✅)

安装

sudo apt install logrotate

示例配置(Node.js 日志)

sudo nano /etc/logrotate.d/nodejs

内容示例:

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

说明:

  • daily:每天轮转
  • rotate 7:保留 7 天
  • compress:压缩旧日志
  • copytruncate:不重启服务即可截断

测试:

sudo logrotate -d /etc/logrotate.d/nodejs

方案 2:PM2(如果是 Node 应用)

pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7

方案 3:应用层控制日志级别

在 JS 代码中:

logger.level = 'info'; // 不要 debug / verbose

常见库:

  • winston
  • pino
  • bunyan

四、防止日志无限增长(架构层面)

1. 不要把 console.log 当日志

❌ 错误:

console.log(req)

✅ 正确:

logger.info('request received')

2. 使用 systemd 限制

[Service]
StandardOutput=append:/var/log/nodejs/app.log

配合 logrotate 使用


五、如果是 Docker + JS

logging:
  driver: "json-file"
  options:
    max-size: "10m"
    max-file: "3"

六、快速排查清单 ✅

  • [ ] 找到大日志文件
  • [ ] 清空或删除旧日志
  • [ ] 配置 logrotate
  • [ ] 控制日志级别
  • [ ] 使用 PM2 / Docker 日志限制
  • [ ] 避免 console.log 滥用

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

  • Node.js / 前端 / Docker / PM2 哪一种
  • 日志路径或截图

我可以给你针对性的配置方案

0