在 Debian 上排查 Golang 程序日志/错误,通常分几种情况:你是想看 系统日志、服务日志,还是 程序自身打印的报错。下面按常见场景给你一份实用指南。
go run main.go
# 或
./your-program
Golang 的 log、fmt.Println、panic 都会直接输出到终端。
./your-program > app.log 2>&1
查看:
tail -f app.log
假设服务名是 myapp:
sudo journalctl -u myapp -f
查看错误:
sudo journalctl -u myapp -p err
systemctl status myapp
典型样子:
panic: runtime error: invalid memory address
goroutine 1 [running]:
解决建议:
recover()log.Fatal / log.Panicimport "log"
log.SetFlags(log.LstdFlags | log.Lshortfile)
log.Println("something wrong")
| 类型 | 位置 |
|---|---|
| systemd 日志 | journalctl |
| 自定义日志 | /var/log/yourapp.log |
| Nginx + Go | /var/log/nginx/error.log |
| 系统日志 | /var/log/syslog |
# 实时看日志
tail -f /var/log/yourapp.log
# 搜错误
grep -i error /var/log/yourapp.log
# 看最近系统错误
sudo dmesg | tail
logrus / zapGOTRACEBACK=allGOTRACEBACK=all ./yourapp
如果你愿意,可以告诉我:
go version)我可以更精确地帮你定位。