在 Linux 上查找 Golang 程序日志,主要取决于你的程序是如何写日志的,常见情况如下:
如果 Go 程序直接用:
log.Println("xxx")
fmt.Println("xxx")
日志通常会输出到:
./your_app
日志直接打印在当前终端
nohup ./your_app > app.log 2>&1 &
日志在:
app.log
如果是 systemd 启动的 Go 程序:
journalctl -u your-service-name
实时查看:
journalctl -u your-service-name -f
如果代码里明确指定了日志文件,例如:
log.SetOutput(os.OpenFile("/var/log/myapp.log", ...))
常见位置:
/var/log/
/var/log/myapp/
/home/user/myapp/log/
查找日志文件:
find / -name "*.log" 2>/dev/null | grep myapp
一般都会在配置中指定路径,例如:
log:
path: /var/log/myapp
检查:
cat /etc/myapp/config.yaml
如果是容器运行:
docker logs 容器名
docker logs -f 容器名
K8s:
kubectl logs pod-name
# 看进程
ps -ef | grep your_app
# 看打开的文件
lsof -p PID
# 看日志文件
tail -f /var/log/myapp.log
你可以告诉我:
我可以帮你精确定位日志位置。