温馨提示×

golang日志报错centos咋办

小樊
42
2026-09-15 06:03:01
栏目: 编程语言

在 CentOS 上跑 Go 程序,日志报错是很常见的场景。先别急着改代码,关键是把“什么错”看清楚。下面我按「通用排查流程 → 常见错误类型 → 具体解决办法」给你一套实用指南。


一、先确认几件事(很重要)

1️⃣ 日志在哪看?

常见位置:

  • 程序自己打的日志(stdout / 文件)
  • systemd 服务:
    journalctl -u your-service -f
    
  • 直接运行:
    ./your-app 2>&1 | tee log.txt
    

2️⃣ 报错是哪种?

  • ✅ Go panic(崩溃)
  • ✅ 运行时 error(逻辑错误)
  • ✅ 系统级(权限 / 端口 / 依赖)

二、CentOS 上 Go 常见报错 & 解决办法

✅ 1. permission denied

典型场景

open /var/log/app.log: permission denied
bind: permission denied

解决

# 查看文件权限
ls -l /var/log/app.log

# 修改权限
sudo chown -R youruser:youruser /var/log
sudo chmod 755 /var/log

# 绑定 80/443 端口需要 root
sudo setcap cap_net_bind_service=+ep your-app

✅ 2. address already in use

listen tcp :8080: bind: address already in use

解决

# 查端口占用
sudo netstat -tunlp | grep 8080
# 或
sudo lsof -i:8080

# 杀进程
kill -9 PID

✅ 3. Go 依赖问题(CentOS 老系统常见)

GLIBC_2.28 not found

原因

  • CentOS 7 的 glibc 太老
  • Go 1.20+ 编译的二进制不兼容

解决

  • ✅ 在 CentOS 7 上编译:
    go build
    
  • 或用 CentOS 7 容器构建
  • 或升级到 CentOS 8 / Rocky / Alma

✅ 4. cannot find package

cannot find package "github.com/xxx"

解决

go env -w GO111MODULE=on
go mod tidy
go build

确保:

go version
go env GOPATH

✅ 5. Go panic 示例

panic: runtime error: invalid memory address

解决

  • 看 panic 栈
  • 定位到文件和行号
  • 常见原因:
    • nil pointer
    • 未初始化 map / slice
    • 并发写 map

三、建议你这样贴出来,我才能精准帮你

你可以直接把 报错原文 粘贴过来,比如:

2026/01/15 10:00:00 main.go:42: open config.yaml: no such file or directory

或者:

panic: runtime error: index out of range [3] with length 2

四、如果你愿意,我可以继续帮你

你可以告诉我:

  1. ✅ CentOS 版本(cat /etc/redhat-release)
  2. ✅ Go 版本(go version)
  3. ✅ 完整报错日志
  4. ✅ 是 systemd / docker / 直接运行

我可以一步一步帮你定位并给修改方案。

0 踩