这个问题通常不是“Golang 本身不写日志到 CentOS”,而是程序运行的日志没有按你预期的地方输出。常见原因和排查思路如下:
log 包,但没指定输出文件Go 标准库 log 默认输出到 标准错误(stderr),不是文件。
log.Println("hello")
在 CentOS 上:
nohup / systemd:日志可能进 stdout/stderr,你看不到✅ 正确做法:自己写文件
f, _ := os.OpenFile("/var/log/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
log.SetOutput(f)
如果你用 systemd 启动:
[Service]
ExecStart=/opt/myapp
日志不会自动写文件,而是进 journald。
查看方式:
journalctl -u myapp.service
✅ 如果想写文件:
StandardOutput=append:/var/log/myapp.log
StandardError=append:/var/log/myapp.log
CentOS 默认:
/var/log 需要 root 权限检查:
ls -l /var/log/myapp.log
getenforce
✅ 解决:
www / app 用户时,放到:/home/app/logs/
CentOS 上常见:
检查:
systemctl status myapp
journalctl -xe
如 logrus / zap:
logrus.SetOutput(file)
否则还是 stdout。
journalctl?如果你愿意,可以贴:
我可以直接帮你定位是哪一条。