在 Debian 上监控 Golang 应用日志,常见做法分为几类:直接看日志文件 / 进程输出、用系统工具监控、集中式日志方案。下面按“从简单到专业”给你一个清晰路线。
如果你直接用:
./myapp
日志在终端,按 Ctrl+C 会停。
建议用:
nohup ./myapp > app.log 2>&1 &
tail -f app.log
tail 实时监控tail -f /var/log/myapp.log
如果日志按天切割:
tail -F /var/log/myapp.log
sudo vim /etc/systemd/system/myapp.service
示例:
[Unit]
Description=Golang App
After=network.target
[Service]
ExecStart=/opt/myapp/myapp
WorkingDirectory=/opt/myapp
User=appuser
Restart=always
StandardOutput=append:/var/log/myapp.log
StandardError=append:/var/log/myapp.err
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl status myapp
journalctl -u myapp -f
✅ 优点:自动重启、日志统一管理
sudo vim /etc/logrotate.d/myapp
示例:
/var/log/myapp.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
测试:
logrotate -d /etc/logrotate.d/myapp
log/slog(Go 1.21+ 官方)zap(Uber)logruslogger := slog.New(slog.NewTextHandler(os.Stdout, nil))
logger.Info("server started")
配合 systemd 或文件输出即可。
promtail + loki + grafana适合微服务 / 多机
Golang → 文件日志 → Promtail → Loki → Grafana
企业常用
tail -f /var/log/myapp.log | grep --line-buffered "ERROR" | mail -s "App Error" admin@x.com
✅ 小项目
✅ 中大型
如果你愿意,可以告诉我:
我可以直接给你一套 可复制的配置。