温馨提示×

centos如何查看golang日志

小樊
38
2026-09-09 02:59:40
栏目: 编程语言

在 CentOS 上查看 Golang 程序日志,主要取决于你的 Golang 程序日志输出到哪里。下面分常见情况说明:


一、Golang 日志输出到 stdout / stderr(最常见)

1. 直接运行的程序

如果程序是这样启动的:

./myapp

日志会直接打印在终端。

查看方式:

  • 重新运行并观察
  • 或重定向到文件:
./myapp > app.log 2>&1
tail -f app.log

2. 使用 systemd 管理的 Golang 服务(推荐)

如果你用 systemd 启动 Golang 程序(如 /etc/systemd/system/myapp.service),日志默认由 journald 管理。

查看日志

journalctl -u myapp.service

实时查看

journalctl -u myapp.service -f

查看最近 100 行

journalctl -u myapp.service -n 100

按时间查看

journalctl -u myapp.service --since "2024-01-01 00:00:00"

二、Golang 日志写入到文件

如果你的代码类似:

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

查看日志文件

tail -f /var/log/myapp.log

搜索关键字

grep ERROR /var/log/myapp.log

实时跟踪

tail -f /var/log/myapp.log

三、使用第三方日志库(zap / logrus / slog)

这些库通常也是:

  • 输出到 stdout(systemd 可见)
  • 或写入日志文件

示例(zap 写文件)

zap.NewProduction()

查看方式同上:

journalctl -u myapp
# 或
tail -f /var/log/myapp.log

四、Docker 中运行的 Golang 程序

docker logs myapp
docker logs -f myapp

五、常见问题排查

1. 看不到日志?

  • 确认程序是否真的启动了
ps aux | grep myapp
  • 确认日志路径是否正确
  • 确认是否有写权限

2. journalctl 没日志?

确认 service 文件中有:

[Service]
ExecStart=/opt/myapp/myapp

总结

场景 查看方式
终端运行 终端 / 重定向文件
systemd journalctl -u 服务名
日志文件 tail -f 日志路径
Docker docker logs

如果你愿意,可以贴一下:

  • Golang 是怎么启动的
  • 是否用 systemd / Docker
  • 日志写在哪

我可以帮你给出精确的命令

0