温馨提示×

怎么监debian golang日志

小樊
39
2026-10-04 05:00:18
栏目: 编程语言

在 Debian 上监控(监看)Golang 程序日志,常见有几种方式,取决于你的 日志写到哪里 以及 运行方式(直接运行 / systemd / Docker 等)。下面按场景说明。


一、Golang 日志常见输出位置

一般 Golang 日志会输出到:

  • stdout / stderr(最常见)
  • 文件(如 /var/log/app.log)
  • systemd journal
  • 第三方(如 logrus + 文件)

二、直接运行 Golang 程序(终端)

1. 终端实时查看

go run main.go
# 或
./yourapp

日志直接在终端输出。

2. 重定向到文件并监控

./yourapp > app.log 2>&1 &
tail -f app.log

三、使用 systemd 管理(推荐生产环境)

1. 创建 service

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

2. 查看实时日志(最推荐)

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 中的 Golang 日志

查看容器日志

docker logs -f container_name

限制行数

docker logs --tail 100 -f container_name

六、进阶监控方案(生产推荐)

1. logrotate(防止日志爆炸)

sudo nano /etc/logrotate.d/myapp
/var/log/myapp.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

2. 日志收集

  • ELK / EFK
  • Loki + Grafana
  • Promtail
  • Fluent Bit

七、Golang 端日志建议

  • 使用 log/slog(Go 1.21+)
  • 不要自己写文件轮转,交给 systemd / logrotate
  • 生产环境输出 JSON 日志更利于监控

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

  • Golang 是怎么运行的(systemd / docker / 裸跑)
  • 日志输出到哪里
  • 想“监”的是 实时查看 还是 异常报警

我可以给你更精确的方案。

0 踩