在 Debian 系统上查找 Golang 程序的日志,取决于程序把日志写到哪里。下面按常见情况一步步说明排查方法。
loglog.Println("hello")
默认输出是 标准错误(stderr),通常会被 systemd / shell 捕获。
✅ systemd 服务
journalctl -u 服务名
例如:
journalctl -u mygoapp
journalctl -u mygoapp -f # 实时查看
比如代码里:
log.SetOutput(os.OpenFile("/var/log/myapp.log", ...))
直接查看文件:
cat /var/log/myapp.log
tail -f /var/log/myapp.log
less /var/log/myapp.log
如果不确定路径,可以:
grep -R "log" /path/to/code
/var/log/syslog
/var/log/messages
查看:
tail -f /var/log/syslog
grep myapp /var/log/syslog
systemctl list-units --type=service | grep my
journalctl -u 服务名
journalctl -u 服务名 --since today
journalctl -u 服务名 -f
ls -l /proc/$(pidof 程序名)/fd
lsof -p $(pidof 程序名)
ps aux | grep go
docker logs 容器名
docker logs -f 容器名
| 日志库 | 默认位置 |
|---|---|
| log | stderr |
| logrus | 取决于配置 |
| zap | 取决于配置 |
| zerolog | 取决于配置 |
journalctl -u xxx/var/log/docker logslsof / proc如果你愿意,可以直接贴:
我可以帮你精确定位日志位置。