在 Debian 下分析 Golang 日志,通常分为定位日志、查看日志、分析日志、结合工具几个步骤。下面按常见场景给你一个实用指南。
常见路径:
/var/log/yourapp/
/opt/yourapp/logs/
~/logs/
查看:
ls -lh /var/log/yourapp/
tail -f /var/log/yourapp/app.log
如果你用 systemd 启动 Golang 程序:
journalctl -u yourapp.service
journalctl -u yourapp.service -f # 实时
journalctl -u yourapp.service --since "2024-01-01"
docker logs yourapp
docker logs -f yourapp
docker logs --since 30m yourapp
tail -f app.log
grep -i error app.log
grep -i panic app.log
grep -c ERROR app.log
sed -n '/2024-01-01 10:00/,/2024-01-01 11:00/p' app.log
grep "192.168.1.100" app.log
2024-01-01 10:12:33 [INFO] user login success id=12
2024-01-01 10:12:35 [ERROR] db timeout
jq '.level=="error"' app.log
安装 jq:
sudo apt install jq
awk '/ERROR/ {print $1, $2, $0}' app.log
如果是性能问题:
go tool pprof http://localhost:6060/debug/pprof/heap
defer func() {
if r := recover(); r != nil {
log.Println("panic:", r)
}
}()
log rotatesudo apt install logrotate
示例:
/var/log/yourapp/*.log {
daily
rotate 7
compress
missingok
}
设置时区:
os.Setenv("TZ", "Asia/Shanghai")
Debian 下分析 Golang 日志:先看日志在哪(文件/systemd/docker)→ tail/grep 初步看 → jq/awk 深入分析 → 必要时上 Loki/ELK
如果你能贴一段具体日志内容或部署方式(systemd / docker / 裸跑),我可以帮你更精确地分析。