在 Debian 系统上清理 Golang 应用产生的日志,方式取决于日志写在哪里、用什么日志库/方案。下面按常见情况说明。
常见 Golang 日志位置:
/var/log/yourapp/./logs/journalctlps aux | grep yourapp
或
systemctl status yourapp
sudo rm -f /var/log/yourapp/*.log
⚠️ 如果程序正在写日志,直接删可能导致:
✅ 推荐先确认:
lsof | grep deleted
sudo truncate -s 0 /var/log/yourapp/app.log
或
sudo : > /var/log/yourapp/app.log
如果是 systemd 启动的 Golang 程序:
# 查看日志
journalctl -u yourapp
# 清理该服务日志
sudo journalctl --vacuum-time=7d
# 或
sudo journalctl --vacuum-size=100M
sudo apt install logrotate
/etc/logrotate.d/yourapp/var/log/yourapp/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
✅ copytruncate 适合不重启 Golang 程序
测试:
sudo logrotate -d /etc/logrotate.d/yourapp
docker logs --tail=100 yourapp
清理:
docker system prune
K8s:
kubectl logs yourapp-pod --tail=100
如果日志是 Golang 自己管理的:
logrotatelogruszaplumberjack(自动切割)示例(lumberjack):
&lumberjack.Logger{
Filename: "/var/log/yourapp/app.log",
MaxSize: 10,
MaxBackups: 5,
MaxAge: 7,
}
| 场景 | 推荐方式 |
|---|---|
| 手动清理 | truncate -s 0 |
| 长期管理 | logrotate |
| systemd | journalctl |
| Docker | docker logs / prune |
| Golang 程序 | lumberjack |
如果你愿意,可以告诉我:
我可以给你精确的清理命令。