温馨提示×

debian golang日志怎查异常

小樊
51
2026-09-13 04:43:12
栏目: 编程语言

在 Debian 上排查 Golang 程序异常日志,一般可以从下面几个层面入手:


一、Golang 程序自身日志

1. 标准日志(log 包)

如果程序用了 log.Println / log.Fatal

log.SetFlags(log.LstdFlags | log.Lshortfile)
log.Println("something wrong")

日志会直接输出到 stdout / stderr 或你重定向的文件。

查看方式:

cat /var/log/your_app.log
tail -f /var/log/your_app.log

2. panic / 崩溃信息

Go 程序 panic 时,会打印类似:

panic: runtime error: invalid memory address or nil pointer dereference
goroutine 1 [running]:
main.main()
    /path/main.go:20 +0x45

常见查看位置:

  • 终端(前台运行)
  • systemd journal
  • 重定向的日志文件

二、Debian systemd 服务日志(最常见)

如果你用 systemd 管理 Go 程序:

查看日志

journalctl -u your_service.service

实时查看:

journalctl -u your_service.service -f

只看错误:

journalctl -u your_service.service -p err

查看最近 100 行:

journalctl -u your_service.service -n 100

三、常用异常排查命令

1. 查看进程是否在运行

systemctl status your_service
ps aux | grep your_app

2. 查看端口 / 网络

ss -tulnp | grep your_port

3. 查看系统资源

dmesg | tail
free -h
top

四、Go 程序常见异常 & 对应日志位置

异常类型 日志位置
panic stdout / journalctl
未捕获 error 你自己写的日志
OOM 被杀 dmesg / journalctl
权限问题 journalctl -p err
配置文件错误 应用启动日志

五、推荐做法(生产环境)

  1. 用 logrus / zap 写结构化日志
  2. 日志落盘 + journald
  3. panic 用 recover 捕获
defer func() {
    if r := recover(); r != nil {
        log.Println("panic:", r)
    }
}()

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

  • 你是 systemd / docker / 裸跑
  • 异常是 panic / 无响应 / 退出码非0

我可以直接帮你写一条精准的排查命令。

0