温馨提示×

centos怎样分析golang日志

小樊
47
2026-09-09 03:47:42
栏目: 编程语言

在 CentOS 上分析 Golang 日志,通常可以从 日志文件查看、文本分析、结构化日志处理、可视化 几个层面来做。下面按常见使用场景给你一套实用方案。


一、确认 Golang 日志在哪里

常见情况:

  1. 直接输出到 stdout/stderr

    ps -ef | grep your_app
    

    通常配合 systemd 或 nohup:

    journalctl -u your_app.service
    
  2. 写入日志文件

    ls -lh /var/log/your_app/
    

二、基础日志查看(最常用)

1. 实时查看

tail -f /var/log/your_app/app.log

2. 查看最近 N 行

tail -n 500 /var/log/your_app/app.log

3. 搜索关键字(ERROR / panic)

grep -n "ERROR" /var/log/your_app/app.log
grep -n "panic" /var/log/your_app/app.log

4. 按时间段过滤

sed -n '/2026-01-21 10:00/,/2026-01-21 11:00/p' app.log

三、Golang 日志的结构化分析(推荐)

1. 如果用了 logrus / zap / slog

示例(JSON):

{"level":"error","ts":"2026-01-21T10:12:01Z","msg":"db timeout"}

用 jq 分析(CentOS 需安装)

yum install jq -y

统计 ERROR 数量:

cat app.log | jq 'select(.level=="error")' | wc -l

按小时统计错误:

cat app.log | jq -r '.ts' | cut -c1-13 | sort | uniq -c

四、性能 & 异常分析

1. 分析 panic / stack trace

grep -A 20 "panic" app.log

2. 找出访问最多的接口(web 服务)

假设日志中有:

GET /api/user 200 12ms
grep "GET" app.log | awk '{print $2}' | sort | uniq -c | sort -nr | head

3. 慢请求分析

grep "ms" app.log | awk '$NF>500{print}'

五、结合 systemd(CentOS 7+)

查看服务日志

journalctl -u your_app -f
journalctl -u your_app --since "2026-01-21 10:00"

只查错误

journalctl -u your_app -p err

六、进阶方案(生产推荐)

1. 日志收集

  • Filebeat + Elasticsearch + Kibana
  • Loki + Grafana

2. Golang 侧优化

  • 使用 zap 或 slog
  • 输出 JSON
  • 包含:
    • time
    • level
    • trace_id
    • func / file

七、常见坑(CentOS)

  • 日志时间不是本地时间(UTC)
    date
    timedatectl
    
  • 日志被 logrotate 切分
    ls /var/log/your_app*
    

八、我可以帮你更具体

如果你愿意,可以告诉我:

  1. Golang 用的什么日志库(log / logrus / zap / slog)
  2. 日志格式(文本 / JSON)
  3. 想解决什么问题(报错?性能?统计?)

我可以直接给你 针对性的命令或脚本。

0 踩