在 Linux 上“抓取 Golang 日志”通常分几种场景,下面按常见需求给你一套实用方案。
Go 程序日志一般来自:
log / logrus / zap 等库输出到 stdout / stderr./myapp > app.log 2>&1
nohup ./myapp > app.log 2>&1 &
tail -f app.log
# /etc/systemd/system/myapp.service
[Service]
ExecStart=/usr/local/bin/myapp
StandardOutput=journal
StandardError=journal
journalctl -u myapp -f
查看历史:
journalctl -u myapp --since "2024-01-01" --until "2024-01-02"
journalctl -u myapp | grep ERROR
tail -f app.log | grep -i error
awk '/ERROR/ {print $1, $2, $0}' app.log
log.SetFlags(log.LstdFlags | log.Lshortfile)
logruszap(高性能)slog(Go 1.21+ 官方)如果是 多服务 / 容器 / 生产环境:
示例(Docker):
logging:
driver: json-file
options:
max-size: "100m"
log.SetFlags)如果你能补充:
我可以直接给你精确命令或配置。