温馨提示×

怎样定位centos golang异常日志

小樊
37
2026-10-03 03:55:24
栏目: 编程语言

在 CentOS 上“定位 Golang 异常日志”,通常可以从 系统日志、进程管理日志、应用自身日志、崩溃文件 四个层面来做。下面按实战顺序说明。


一、先看 Golang 程序自己打的日志

大多数 Go 服务会:

  • 输出到 stdout / stderr
  • 或写到 日志文件(如 /var/log/xxx.log)

常见位置

/var/log/your_app/
/opt/your_app/logs/
~/your_app/logs/

查找关键字

grep -R "panic" /var/log/your_app/
grep -R "error" /var/log/your_app/

二、如果 Go 程序是 systemd 服务(最常见)

查看日志

journalctl -u your_service_name

实时跟踪

journalctl -u your_service_name -f

只看错误 / panic

journalctl -u your_service_name | grep -i panic
journalctl -u your_service_name | grep -i error

✅ Go 的 panic 信息通常会出现在 systemd 日志里


三、Go panic 崩溃日志(stderr)

如果程序直接运行:

./your_app

panic 会打印到终端:

panic: runtime error: invalid memory address...

goroutine 1 [running]:
main.main()
    /path/main.go:20 +0x...

如果后台运行:

nohup ./your_app > app.log 2>&1 &

则查看:

cat app.log

四、Go 生成的 core dump(严重崩溃)

1. 检查是否生成 core

ls -lh /var/lib/systemd/coredump/

或

coredumpctl list

2. 查看某次崩溃

coredumpctl info <PID>

3. 用 delve 分析(推荐)

dlv core your_app corefile

五、如果是 Docker 容器里的 Go 程序

docker logs container_name
docker logs -f container_name

或:

kubectl logs pod_name

六、常见排查技巧

1. 确认程序是否真的崩了

ps -ef | grep your_app

2. 看系统日志

/var/log/messages
/var/log/syslog

3. 内存 / OOM 问题

dmesg | grep -i oom
journalctl | grep -i kill

七、推荐做法(最佳实践)

  • Go 程序里用 log 或 zap
  • panic 前 defer recover()
  • 日志写到文件 + systemd
  • 开启 core dump(开发/测试环境)

如果你愿意,可以告诉我:

  • Go 是 systemd / docker / 裸跑
  • 报错是 panic / 卡死 / 退出码
  • CentOS 版本(7 / 8 / Stream)

我可以直接给你针对性的命令。

0 踩