清理 Node.js 运行日志的方法,取决于日志是怎么产生的、存在哪里、用什么方式记录的。下面按常见情况给你一套实用方案。
常见日志位置:
logs/)/var/log)# 查看日志文件
ls -lh logs/
# 删除日志
rm -rf logs/*.log
⚠️ 注意:
示例 /etc/logrotate.d/node-app:
/var/www/myapp/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
说明:
daily:每天轮转rotate 7:保留 7 份compress:压缩旧日志copytruncate:不中断 Node 进程const transport = new DailyRotateFile({
filename: 'logs/app-%DATE%.log',
datePattern: 'YYYY-MM-DD',
maxFiles: '14d' // 保留 14 天
});
pino-roll -d 7 -f logs/app.log
PM2 默认日志在:
~/.pm2/logs/
清理命令:
pm2 flush
或设置日志大小限制(ecosystem.config.js):
module.exports = {
apps: [{
name: 'app',
error_file: 'err.log',
out_file: 'out.log',
log_size: '10M',
merge_logs: true
}]
}
查看日志大小:
docker inspect --format='{{.LogPath}}' 容器名
限制日志大小(docker-compose.yml):
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
rm 正在写入的日志(可能导致磁盘不释放)> log.log 强制清空(某些情况进程仍占用)| 场景 | 建议 |
|---|---|
| 本地开发 | 手动删 or pm2 flush |
| 生产服务 | logrotate / 日志库轮转 |
| Docker | 配置 log driver |
| 高并发 | pino + 轮转 |
如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置。