温馨提示×

怎样清理debian golang日志

小樊
37
2026-09-01 05:36:13
栏目: 编程语言

在 Debian 系统上清理 Golang 应用产生的日志,方式取决于日志写在哪里用什么日志库/方案。下面按常见情况说明。


一、先确认日志位置

常见 Golang 日志位置:

  • 应用自己写文件
    • /var/log/yourapp/
    • ./logs/
    • 自定义路径
  • systemd 服务日志
    • journalctl
  • Docker / Kubernetes
    • 容器日志

查看进程日志路径

ps aux | grep yourapp

systemctl status yourapp

二、清理方式

1️⃣ 直接删除日志文件(最简单)

sudo rm -f /var/log/yourapp/*.log

⚠️ 如果程序正在写日志,直接删可能导致:

  • 日志继续写但文件已删除(磁盘不释放)
  • 需要重启或信号重载

✅ 推荐先确认:

lsof | grep deleted

2️⃣ 清空日志(更安全)

sudo truncate -s 0 /var/log/yourapp/app.log

sudo : > /var/log/yourapp/app.log

3️⃣ systemd 服务(journalctl)

如果是 systemd 启动的 Golang 程序:

# 查看日志
journalctl -u yourapp

# 清理该服务日志
sudo journalctl --vacuum-time=7d
# 或
sudo journalctl --vacuum-size=100M

4️⃣ 使用 logrotate(推荐长期方案)

安装

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

5️⃣ Docker / Kubernetes

docker logs --tail=100 yourapp

清理:

docker system prune

K8s:

kubectl logs yourapp-pod --tail=100

三、Golang 程序本身建议

如果日志是 Golang 自己管理的:

  • 使用 logrotate
  • 或使用日志库:
    • logrus
    • zap
    • lumberjack(自动切割)

示例(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

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

  • Golang 是怎么运行的(systemd / docker / 直接运行)
  • 日志路径
  • 是否还在持续写入

我可以给你精确的清理命令

0