温馨提示×

怎样找centos golang错日志

小樊
46
2026-10-06 01:49:28
栏目: 编程语言

在 CentOS 上排查 Golang 程序的错误日志,通常可以从程序自身日志、系统日志、进程管理工具、崩溃文件几个方向入手。下面按常见场景给你梳理一下。


一、Golang 程序自身日志

1. 程序自己打印的日志

很多 Go 程序会:

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

查看方式:

# 如果前台运行
./yourapp

# 如果输出重定向了
cat /var/log/yourapp.log
tail -f /var/log/yourapp.log

2. Go 的 panic 日志

Go 程序崩溃时通常会打印:

panic: runtime error: ...
goroutine 1 [running]:
main.main()
    /path/main.go:10 +0x...

如果是后台运行,panic 信息可能在:

  • 启动它的终端
  • systemd 日志
  • nohup.out
cat nohup.out

二、使用 systemd 管理的 Go 服务(最常见)

如果你是用 systemd 启动的:

1. 查看服务日志

journalctl -u yourapp.service

实时查看:

journalctl -u yourapp.service -f

只看错误:

journalctl -u yourapp.service -p err

2. 查看是否启动失败

systemctl status yourapp.service

三、CentOS 系统日志

1. 系统级日志

/var/log/messages
/var/log/syslog   # 某些版本

查看示例:

tail -f /var/log/messages
grep yourapp /var/log/messages

2. OOM(内存不足)问题

Go 程序容易因内存被 kill:

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

四、程序异常退出但没日志

1. 使用 strace 排查

strace -f -o /tmp/trace.log ./yourapp

2. 捕获 panic 到文件

在 Go 代码里加:

log.SetOutput(os.Stderr)
defer func() {
    if r := recover(); r != nil {
        log.Println("panic:", r)
    }
}()

五、core dump(严重崩溃)

1. 开启 core dump

ulimit -c unlimited

2. 查看 core 文件

ls -lh core*
gdb yourapp core

六、推荐的标准做法(生产环境)

  • 用 systemd 管理
  • 日志统一输出到 stdout
  • 用 journalctl 查日志
  • 配合 logrus / zap 写结构化日志

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

  • Go 程序是怎么启动的(手动 / nohup / systemd)
  • 是 无日志 还是 有报错看不懂
  • CentOS 版本(7 还是 8 / Stream)

我可以给你更精确的排查命令。

0 踩