在 CentOS 上监控 Go (Golang) 程序日志,常见做法分为几类:系统级日志、应用日志文件监控、实时查看、集中化监控。下面按实际使用场景给你一个较完整的方案。
假设你程序日志写在:
/var/log/myapp/app.log
实时查看:
tail -f /var/log/myapp/app.log
查看最近 100 行:
tail -n 100 /var/log/myapp/app.log
Go 程序通常这样跑:
sudo systemctl status myapp
查看实时日志:
journalctl -u myapp -f
查看最近 200 行:
journalctl -u myapp -n 200
✅ 优点:不用自己管理日志文件,CentOS 7+ 原生支持
log/slog(Go 1.21+,官方)zap(Uber)logrus示例(zap):
logger, _ := zap.NewProduction()
logger.Info("server started", zap.String("port", "8080"))
输出 JSON,方便后续采集。
编辑:
sudo vim /etc/logrotate.d/myapp
示例:
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
测试:
sudo logrotate -d /etc/logrotate.d/myapp
例如监控 ERROR:
tail -f /var/log/myapp/app.log | grep --line-buffered ERROR
或写脚本发邮件/钉钉。
prometheus.MustRegister(errorCounter)
errorCounter.Inc()
示例(Filebeat):
filebeat.inputs:
- type: log
paths:
- /var/log/myapp/*.log
output.elasticsearch:
hosts: ["http://es:9200"]
| 场景 | 推荐方案 |
|---|---|
| 单机小项目 | systemd + journalctl |
| 中型服务 | 日志文件 + logrotate |
| 生产环境 | Loki / ELK |
| 微服务 | Prometheus + Grafana |
如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置。