在 Debian 系统上分析 Golang 应用日志,一般可以分为 日志来源定位、日志内容分析、常见工具使用、以及问题排查思路 四部分。下面按实际运维和开发场景系统说明。
Golang 应用常见日志输出方式:
fmt.Println / log.Printlogruszapslog(Go 1.21+)常见输出位置:
stdout / stderr)/var/log/app.log)如果 Golang 程序是通过 systemd 启动的:
systemctl status your-app
journalctl -u your-app
查看实时日志:
journalctl -u your-app -f
按时间查看:
journalctl -u your-app --since "2025-01-01" --until "2025-01-02"
✅ 推荐方式:Debian + systemd 优先使用 journalctl
如果日志写入文件:
tail -f /var/log/your-app.log
查找错误:
grep -i error /var/log/your-app.log
cat app.log
less app.log
tail -n 100 app.log
tail -f app.log
grep -i error app.log
grep -i panic app.log
grep -i fatal app.log
如果日志带时间戳:
grep "2025-01-01 10:" app.log
2025/01/01 10:00:00 server start
2025/01/01 10:00:01 error: connection refused
分析重点:
{"level":"error","msg":"db connection failed","time":"2025-01-01T10:00:00Z"}
分析方式:
jq . app.log
grep '"level":"error"' app.log
Golang panic 日志特征:
panic: runtime error
goroutine 1 [running]:
查找:
grep -A 20 panic app.log
journalctl -u your-app | grep -i oom
或:
dmesg | grep -i oom
常见关键词:
fatal errorconcurrent map writesslice bounds out of rangenil pointer dereferencesudo apt install lnav
lnav /var/log/your-app.log
功能:
如果日志显示慢或卡顿:
代码中开启:
import _ "net/http/pprof"
分析:
go tool pprof http://localhost:6060/debug/pprof/profile
✅ 日志建议:
leveltrace_iderror,要写上下文示例:
log.Printf("level=ERROR user_id=%d msg=\"db query failed\"", userID)
| 场景 | 命令 |
|---|---|
| systemd 服务日志 | journalctl -u app -f |
| 错误日志 | grep -i error app.log |
| 实时日志 | tail -f app.log |
| panic 分析 | grep -A 20 panic app.log |
| 可视化分析 | lnav app.log |
如果你愿意,可以:
我可以 直接帮你分析具体日志内容。