在 Debian 上运行 Go(Golang)程序时,“解析日志”通常指查看、过滤、分析 Go 程序产生的日志文件或 systemd/journal 日志。下面按常见场景给你一套实用方法。
例如:
log.SetOutput(os.OpenFile("/var/log/myapp.log", ...))
cat /var/log/myapp.log
less /var/log/myapp.log
tail -f /var/log/myapp.log
grep ERROR /var/log/myapp.log
grep -i "timeout" /var/log/myapp.log
grep "2026-01-21 10:" /var/log/myapp.log
grep -c ERROR /var/log/myapp.log
如果 Go 程序作为 systemd 服务运行:
journalctl -u myapp.service
journalctl -u myapp.service -f
journalctl -u myapp.service --since "2026-01-21 10:00"
journalctl -u myapp.service | grep ERROR
如果 Go 使用 logrus / zap 输出 JSON:
{"level":"error","msg":"db timeout","time":"2026-01-21T10:00:00Z"}
jq 'select(.level=="error")' /var/log/myapp.log
jq '.msg' /var/log/myapp.log
时间 [级别] 模块: 消息
2026-01-21 10:00:00 [ERROR] db: connection failed
log.SetFlags(0)
log.Printf("%s [%s] %s: %s", time.Now().Format(time.RFC3339), "ERROR", "db", "failed")
lnav /var/log/myapp.log
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
// regex / json 解析
}
log 默认不带级别 → 建议自定义如果你愿意,可以:
我可以直接帮你写解析脚本或正则。