温馨提示×

golang日志在centos存哪里

小樊
40
2026-09-27 07:09:00
栏目: 编程语言

在 CentOS 上,Go(Golang)程序本身不会自动把日志存到某个固定位置,日志在哪里完全取决于你的程序是怎么写的。常见情况如下:


一、Go 程序日志常见存放位置

1️⃣ 打印到标准输出(stdout / stderr)

如果代码里用的是:

log.Println("xxx")
fmt.Println("xxx")

那么:

  • 前台运行:日志直接在终端
  • systemd 启动:日志在 journalctl

查看方式:

journalctl -u your-service -f

2️⃣ 写入到文件(最常见)

如果你用了:

log.SetOutput(os.OpenFile("/var/log/myapp/app.log", ...))

常见路径:

/var/log/myapp/
/var/log/<项目名>.log
/home/<user>/logs/

查看:

tail -f /var/log/myapp/app.log

3️⃣ 使用日志库(如 zap / logrus / slog)

通常也是写文件:

zap logger -> /var/log/app/app.log

或集中输出到 stdout,由 systemd / docker 接管。


4️⃣ Docker 容器里的 Go 程序

日志默认在:

docker logs <container_id>

或:

/var/lib/docker/containers/...

5️⃣ systemd 服务(非常常见)

如果你用 systemd 启动 Go 程序:

[Service]
ExecStart=/opt/myapp/app

✅ 没写文件 → 全在 journald

journalctl -u myapp.service

二、快速定位你的 Go 日志在哪

1️⃣ 看是不是 systemd 服务

systemctl list-units --type=service | grep go
systemctl status your-app

2️⃣ 看进程打开了哪些日志文件

lsof -p <pid> | grep log

3️⃣ 全局搜日志文件

find /var/log -name "*.log" | grep your-app

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

✅ 写文件 + logrotate
✅ 或 stdout + journald / 容器日志
✅ 不要用 fmt.Println 做正式日志


如果你愿意,可以:

  • 贴一下你的 启动方式(systemd / nohup / docker)
  • 或贴一段 Go 日志代码

我可以直接告诉你日志现在在哪、该怎么配最合理。

0 踩