温馨提示×

centos golang日志怎么实时看

小樊
37
2026-09-30 06:31:19
栏目: 编程语言

在 CentOS 上实时查看 Golang 程序日志,常见有几种方式,取决于你的日志是输出到哪里的。


一、日志直接输出到终端(stdout / stderr)

如果 Golang 程序是前台运行,例如:

./myapp

日志直接打印在终端,直接看终端即可。

后台运行 + 实时看

如果用了 nohup 或 &:

nohup ./myapp > app.log 2>&1 &

实时查看:

tail -f app.log

退出查看:Ctrl + C


二、日志写入文件(最常见)

假设日志写在:

/var/log/myapp/app.log

实时查看:

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

查看更多实时内容(比如最近 100 行)

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

按关键字过滤(如 error)

tail -f /var/log/myapp/app.log | grep error

三、使用 systemd 管理的 Golang 服务(推荐)

如果程序是通过 systemd 启动的(如 /etc/systemd/system/myapp.service):

实时查看日志

journalctl -u myapp -f

查看最近 200 行并实时

journalctl -u myapp -n 200 -f

只看错误日志

journalctl -u myapp -p err -f

四、Golang 日志库建议(开发角度)

如果你是自己写 Golang 程序,推荐:

标准库

log.SetOutput(os.Stdout)

常用日志库

  • logrus
  • zap
  • slog(Go 1.21+)

示例(zap):

logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("server started")

五、常见问题排查

1. 看不到日志?

  • 确认程序是否真的在运行:ps -ef | grep myapp
  • 确认日志路径是否正确
  • 确认是否有写权限

2. 日志不刷新?

  • 确保不是被 buffer 了(Go 的 log 默认是即时写)
  • 如果用 fmt.Println,后台运行可能被缓冲

如果你愿意,可以告诉我:

  • 你的 Golang 程序是怎么运行的(直接跑 / systemd / docker)
  • 日志是写到文件还是 stdout

我可以给你更精确的命令。

0 踩