温馨提示×

debian golang日志如何排查

小樊
47
2026-09-19 07:49:44
栏目: 编程语言

在 Debian 上排查 Golang 日志,一般可以从 应用日志、系统日志、运行环境、崩溃信息 几个层面入手。下面按实战顺序说明。


一、确认 Golang 程序本身有没有日志

1. 查看程序日志输出位置

常见情况:

  • 标准输出(stdout / stderr)
  • 文件中(如 /var/log/xxx.log)
  • systemd journal

先看启动方式:

ps aux | grep your_app

如果是直接运行:

./yourapp >> /var/log/yourapp.log 2>&1

查看日志:

tail -f /var/log/yourapp.log

二、通过 systemd 排查(最常见)

如果你用 systemd 管理 Golang 服务:

1. 查看服务状态

systemctl status yourapp.service

2. 查看日志(重点)

journalctl -u yourapp.service -f

查看最近 100 行:

journalctl -u yourapp.service -n 100

带时间:

journalctl -u yourapp.service --since "10 min ago"

三、Golang 程序崩溃排查

1. panic 日志

Golang panic 一般会输出到 stderr,例如:

panic: runtime error: invalid memory address
goroutine 1 [running]:
main.main()

如果是 systemd:

journalctl -u yourapp.service | grep panic

2. 开启 panic 日志文件

在代码中:

log.SetOutput(os.Stderr)

或写文件:

f, _ := os.OpenFile("/var/log/yourapp.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
log.SetOutput(f)

四、核心转储(coredump)排查

如果程序直接挂掉:

1. 启用 coredump

ulimit -c unlimited

或 systemd:

[Service]
LimitCORE=infinity

2. 查看 coredump

coredumpctl list
coredumpctl gdb <pid>

五、Debian 系统日志

1. 系统日志

tail -f /var/log/syslog

或:

journalctl -f

2. OOM(内存不足)

dmesg | grep -i oom
journalctl | grep -i "out of memory"

六、网络和端口问题

1. 端口是否被占用

ss -lntp | grep 8080

2. 防火墙

iptables -L
ufw status

七、Golang 自身调试手段

1. 增加日志级别

log.SetFlags(log.LstdFlags | log.Lshortfile)

2. 使用 zap / logrus

logger.Error("db error", zap.Error(err))

3. pprof(性能/卡死)

import _ "net/http/pprof"
go tool pprof http://localhost:6060/debug/pprof/goroutine

八、常见排查套路总结

✅ 程序起不来
→ journalctl -u 服务名

✅ 运行中崩溃
→ 看 panic / coredump

✅ 无日志
→ 确认 stdout/stderr 重定向

✅ 性能问题
→ pprof + dmesg


如果你愿意,可以直接把:

  • 启动方式(systemd / nohup / docker)
  • 报错日志原文
  • Golang 版本

贴出来,我可以帮你精准定位问题。

0 踩