在 CentOS 上“找不到 / 缺失 golang 日志”,通常不是系统本身有专门的 golang 日志文件,而是以下几个常见原因导致的误解或配置问题。下面按场景说明。
关键点:
/var/log/messages、/var/log/syslog(部分版本)log、syslog、logrus、zap 等✅ 所以:“CentOS 缺失 golang 日志”本质是“Go 程序没写日志或日志位置不对”
例如:
log.Println("start service")
如果你这样运行:
./app
日志只会出现在终端。
✅ 解决:
./app > /var/log/app.log 2>&1 &
或交给 systemd(推荐)
如果你用:
systemctl start mygo.service
却找不到日志,可能是:
[Service]
ExecStart=/opt/app/app
# 没重定向
✅ 查看方式:
journalctl -u mygo.service
✅ 推荐 service 示例:
[Unit]
Description=Go App
[Service]
ExecStart=/opt/app/app
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
代码中:
logFile, _ := os.OpenFile("/var/log/go/app.log", ...)
但:
ls /var/log/go
# 不存在
✅ 解决:
mkdir -p /var/log/go
chown appuser:appuser /var/log/go
即使目录存在,也可能被 SELinux 拦:
tail /var/log/audit/audit.log | grep denied
✅ 临时验证:
setenforce 0
✅ 永久解决(示例):
semanage fcontext -a -t var_log_t "/var/log/go(/.*)?"
restorecon -Rv /var/log/go
如果你在 Docker 里跑 Go:
查看方式:
docker logs container_name
✅ 或挂载日志目录:
-v /var/log/go:/app/log
# 1. 程序是否运行
ps -ef | grep app
# 2. systemd 日志
journalctl -u yourapp
# 3. 是否有日志文件
ls -l /var/log | grep go
# 4. SELinux
getenforce
# 5. 程序日志配置
grep -R "log" yourapp/config
CentOS 不会“缺失 golang 日志”,而是 Go 程序是否写日志、写到哪、谁在管日志(systemd / docker / shell)的问题。
如果你愿意,可以把:
发出来,我可以帮你精确定位。