在 CentOS 上实时查看 Golang 程序日志,常见有几种方式,取决于你的日志是输出到哪里的。
如果 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
tail -n 100 -f /var/log/myapp/app.log
tail -f /var/log/myapp/app.log | grep error
如果程序是通过 systemd 启动的(如 /etc/systemd/system/myapp.service):
journalctl -u myapp -f
journalctl -u myapp -n 200 -f
journalctl -u myapp -p err -f
如果你是自己写 Golang 程序,推荐:
log.SetOutput(os.Stdout)
logruszapslog(Go 1.21+)示例(zap):
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("server started")
ps -ef | grep myapplog 默认是即时写)fmt.Println,后台运行可能被缓冲如果你愿意,可以告诉我:
我可以给你更精确的命令。