在 Debian 下调试 Go(Golang)日志,通常可以从日志本身、运行方式、调试工具三个维度来做。下面按实用场景给你一套清晰的做法。
logimport "log"
log.SetFlags(log.LstdFlags | log.Lshortfile)
log.Println("debug info")
Lshortfile:显示文件名和行号(很关键)log/slog(Go 1.21+ 推荐)import "log/slog"
logger := slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{
Level: slog.LevelDebug,
}))
logger.Debug("debug message", "key", "value")
zap(Uber,性能好)logrus(易用)log.SetLevel(log.DebugLevel)
go run main.go
# 或
./yourapp
./yourapp > app.log 2>&1
tail -f app.log
如果你用 systemd:
# /etc/systemd/system/yourapp.service
[Service]
ExecStart=/opt/yourapp/yourapp
StandardOutput=journal
StandardError=journal
查看日志:
journalctl -u yourapp -f
journalctl -u yourapp --since "5 min ago"
sudo apt install delve
dlv debug main.go
常用命令:
break main.main
continue
print var
GODEBUG=gcrace=1 ./yourapp
GODEBUG=schedtrace=1000 ./yourapp
✅ 打印调用栈
import "runtime/debug"
debug.PrintStack()
✅ HTTP 服务加 pprof
import _ "net/http/pprof"
go func() {
http.ListenAndServe("localhost:6060", nil)
}()
✅ 区分环境
if os.Getenv("APP_ENV") == "dev" {
logger.SetLevel(Debug)
}
| 场景 | 推荐 |
|---|---|
| 本地开发 | go run + slog |
| 服务器 | systemd + journalctl |
| 难复现问题 | Delve |
| 性能问题 | pprof |
如果你愿意,可以告诉我:
我可以直接给你一套针对你项目的调试方案。