在 Debian 系统上查看 Golang 程序日志,取决于你的程序是如何运行和记录日志的。下面按常见场景给你一个完整说明。
很多 Golang 程序直接输出到:
stdoutstderrgo run main.go
日志会直接显示在终端。
./myapp > app.log 2>&1 &
查看日志:
tail -f app.log
如果 Golang 程序是通过 systemd 管理的服务:
sudo journalctl -u your-service-name
实时查看:
sudo journalctl -u your-service-name -f
查看最近 100 行:
sudo journalctl -u your-service-name -n 100
很多 Golang 程序会写日志到:
/var/log/myapp.log
查看:
tail -f /var/log/myapp.log
如果程序使用 log.New() 或 zap / logrus 等日志库,路径通常在配置文件中。
loglog.Println("hello")
输出到 stderr 或你指定的 io.Writer
通常:
重点检查:
docker logs 容器名
docker logs -f 容器名
ps aux | grep myapp
ls -l /proc/进程号/fd
find /var/log -name "*.log"
| 场景 | 查看方式 |
|---|---|
| systemd 服务 | journalctl -u 服务名 |
| 普通程序 | stdout / 日志文件 |
| Docker | docker logs |
| 系统日志 | /var/log/syslog |
[Unit]
Description=My Golang App
[Service]
ExecStart=/usr/local/bin/myapp
Restart=always
[Install]
WantedBy=multi-user.target
sudo journalctl -u myapp -f
如果你愿意,可以把 你的 Golang 程序运行方式(systemd / docker / 直接运行)或 日志库 发出来,我可以给你更精确的查看方法。