温馨提示×

debian下golang日志怎分析

小樊
39
2026-09-04 01:39:21
栏目: 编程语言

在 Debian 下分析 Golang 日志,通常分为定位日志、查看日志、分析日志、结合工具几个步骤。下面按常见场景给你一个实用指南。


一、Golang 日志一般放在哪?

1. 应用自己写日志文件

常见路径:

/var/log/yourapp/
/opt/yourapp/logs/
~/logs/

查看:

ls -lh /var/log/yourapp/
tail -f /var/log/yourapp/app.log

2. 使用 systemd 管理的服务

如果你用 systemd 启动 Golang 程序:

journalctl -u yourapp.service
journalctl -u yourapp.service -f        # 实时
journalctl -u yourapp.service --since "2024-01-01"

3. Docker 容器中的 Golang

docker logs yourapp
docker logs -f yourapp
docker logs --since 30m yourapp

二、常用日志分析命令(Debian)

1. 实时查看

tail -f app.log

2. 过滤 ERROR / PANIC

grep -i error app.log
grep -i panic app.log

3. 统计错误数量

grep -c ERROR app.log

4. 按时间范围查看

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

5. 查看某 IP 的请求

grep "192.168.1.100" app.log

三、Golang 日志格式分析

常见格式

2024-01-01 10:12:33 [INFO] user login success id=12
2024-01-01 10:12:35 [ERROR] db timeout

如果是 JSON 日志(如 zap / logrus)

jq '.level=="error"' app.log

安装 jq:

sudo apt install jq

四、推荐分析工具

1. grep / awk(轻量)

awk '/ERROR/ {print $1, $2, $0}' app.log

2. Go 自带 pprof(性能日志)

如果是性能问题:

go tool pprof http://localhost:6060/debug/pprof/heap

3. 日志系统(生产推荐)

  • Loki + Grafana
  • ELK(Elasticsearch + Logstash + Kibana)
  • Fluent Bit

五、常见 Golang 日志问题排查

1. panic 没捕获

defer func() {
    if r := recover(); r != nil {
        log.Println("panic:", r)
    }
}()

2. 日志太多

  • 使用 log rotate
sudo apt install logrotate

示例:

/var/log/yourapp/*.log {
    daily
    rotate 7
    compress
    missingok
}

3. 时间戳不对

设置时区:

os.Setenv("TZ", "Asia/Shanghai")

六、总结一句话

Debian 下分析 Golang 日志:先看日志在哪(文件/systemd/docker)→ tail/grep 初步看 → jq/awk 深入分析 → 必要时上 Loki/ELK

如果你能贴一段具体日志内容或部署方式(systemd / docker / 裸跑),我可以帮你更精确地分析。

0