在 Debian 上查看 Golang 应用日志,取决于你的程序是如何运行和记录日志的。下面按常见场景给你梳理一下。
如果你直接运行:
go run main.go
或
./myapp
日志会直接输出到终端(stdout / stderr)。
nohupnohup ./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
systemctl status your-service-name
示例 service 文件:
[Unit]
Description=Golang App
[Service]
ExecStart=/usr/local/bin/myapp
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
如果你的代码里写了日志文件,比如:
log.SetOutput(os.OpenFile("/var/log/myapp.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644))
查看:
tail -f /var/log/myapp.log
log/sloglogruszap日志位置取决于你的配置,例如:
logger, _ := zap.NewProduction()
defer logger.Sync()
通常输出到:
docker logs 容器名或ID
实时查看:
docker logs -f 容器名
ls -l /proc/$(pidof myapp)/fd
journalctl -xe
| 场景 | 命令 |
|---|---|
| systemd | journalctl -u 服务名 -f |
| 手动运行 | 终端 / nohup |
| 日志文件 | tail -f /var/log/xxx.log |
| Docker | docker logs |
如果你愿意,可以把 运行方式(systemd / docker / 直接运行) 或 日志库 发我,我可以给你更精确的命令。