在 Debian 上用 Golang 写的程序,日志“突然变大 / 越来越大”,通常不是 Debian 本身的问题,而是日志写入方式 + 程序行为 + 系统环境共同导致的。下面按常见原因给你一个系统性的排查清单。
如果你用的是:
log.Println(...)
或:
fmt.Fprintln(logFile, ...)
而没有 log rotate,那文件只会无限增长。
✅ 解决:
lumberjackzap + rotatelogrus + hook示例(lumberjack):
&lumberjack.Logger{
Filename: "/var/log/app.log",
MaxSize: 100, // MB
MaxBackups: 5,
MaxAge: 30, // days
}
Go 服务常见现象:
结果:
connection refused
connection refused
connection refused
...
每秒几百行。
✅ 排查:
tail -f /var/log/app.log
看是否有重复错误刷屏。
Debian + systemd 很常见:
结果:
/var/log/app.log/var/log/journal/✅ 检查:
journalctl -u your-service
du -sh /var/log/journal
✅ 解决:
例如:
log.SetLevel(log.DebugLevel)
生产环境还在 Debug。
✅ 建议:
Go 性能太好,QPS 很高:
✅ 优化:
检查:
cat /etc/logrotate.d/your-app
常见错误:
postrotate systemctl reload xxx测试:
logrotate -d /etc/logrotate.d/your-app
df -h
df -i
有时不是“大”,而是小文件太多。
# 看哪个日志大
du -sh /var/log/*
# 看实时增长
tail -f /var/log/app.log
# 看 systemd 日志大小
journalctl --disk-usage
# 看进程在写什么
lsof -p <pid> | grep log
Go + 日志最佳实践:
zap 或 logruslumberjacklogrotate如果你愿意,可以把:
贴出来,我可以直接帮你定位是哪一条导致的。