在 Debian 上调试 Golang 程序的日志,通常可以从日志本身、运行方式、系统环境、工具链几个层面来做。下面按常见场景给你一个实用指南。
go version
go env
重点关注:
GOPATHGOROOTGOOS=linuxCGO_ENABLED(某些库依赖 C)如果是服务程序,确认是否用了 systemd:
systemctl status your-service
journalctl -u your-service -f
import "log"
log.SetFlags(log.LstdFlags | log.Lshortfile)
log.Println("debug info")
运行中查看:
./yourapp 2>&1 | tee debug.log
logFile, _ := os.OpenFile("/var/log/yourapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
log.SetOutput(logFile)
Debian 下实时看:
tail -f /var/log/yourapp.log
import "github.com/sirupsen/logrus"
logrus.SetLevel(logrus.DebugLevel)
logrus.WithField("module", "auth").Debug("login start")
logger, _ := zap.NewDevelopment()
logger.Debug("debug message")
如果你用 systemd 启动:
[Service]
StandardOutput=journal
StandardError=journal
查看:
journalctl -u yourapp -n 100 --no-pager
journalctl -f -u yourapp
ls -ld /var/log
id youruser
解决:
/tmp/yourapp.logDebian:
timedatectl
Go 中显式设置:
time.Local = time.UTC
sudo apt install delve
dlv debug ./main.go
或 attach:
dlv attach <pid>
✅ 加 Lshortfile
✅ 用 DebugLevel
✅ journalctl -f
✅ 写到文件 tail -f
✅ Delve 看运行时状态
如果你愿意,可以告诉我:
我可以直接给你一套针对你项目的调试方案。