在 Debian 上监控(监看)Golang 程序日志,常见有几种方式,取决于你的 日志写到哪里 以及 运行方式(直接运行 / systemd / Docker 等)。下面按场景说明。
一般 Golang 日志会输出到:
/var/log/app.log)go run main.go
# 或
./yourapp
日志直接在终端输出。
./yourapp > app.log 2>&1 &
tail -f app.log
sudo nano /etc/systemd/system/myapp.service
示例:
[Unit]
Description=Golang App
After=network.target
[Service]
ExecStart=/opt/myapp/myapp
WorkingDirectory=/opt/myapp
User=www-data
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
journalctl -u myapp -f
查看最近 100 行:
journalctl -u myapp -n 100
按时间:
journalctl -u myapp --since "10 min ago"
tail -f /var/log/myapp.log
tail -f /var/log/myapp/*.log
tail -f /var/log/myapp.log | grep --color=auto ERROR
docker logs -f container_name
docker logs --tail 100 -f container_name
sudo nano /etc/logrotate.d/myapp
/var/log/myapp.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
log/slog(Go 1.21+)如果你愿意,可以告诉我:
我可以给你更精确的方案。