温馨提示×

怎样过滤centos golang日志

小樊
48
2026-10-11 23:22:14
栏目: 编程语言

在 CentOS 上“过滤 Golang 日志”通常分几种场景,下面按最常用 → 进阶给你一套可落地的做法。


一、直接用 Linux 命令过滤(最简单)

1. 查看实时日志并过滤

tail -f /var/log/your_app.log | grep "ERROR"

2. 过滤多个关键字

grep -E "ERROR|PANIC|FATAL" /var/log/your_app.log

3. 排除某些日志

grep -v "healthcheck" /var/log/your_app.log

4. 按时间过滤

grep "2026-01-21 10:" /var/log/your_app.log

二、Golang 程序自身过滤日志(推荐)

1. 使用标准库 log + 级别控制

var debug = false

func logDebug(msg string) {
    if debug {
        log.Println("[DEBUG]", msg)
    }
}

2. 使用成熟日志库(强烈推荐)

zap(Uber,性能极好)

logger, _ := zap.NewProduction()
defer logger.Sync()

logger.Info("server started", zap.String("host", "0.0.0.0"))
logger.Error("db connect failed", zap.Error(err))

按级别过滤:

grep "\"level\":\"error\"" app.log

logrus

grep "level=error" app.log

三、systemd 服务日志过滤(CentOS 7/8)

如果你的 Golang 程序是用 systemd 启动的:

journalctl -u your_app.service -f
journalctl -u your_app.service | grep ERROR

按时间:

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

四、结构化日志 + 工具过滤(生产级)

JSON 日志 + jq

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

示例日志:

{"level":"error","msg":"db timeout","ts":1705812345}

五、集中式日志方案(企业级)

  • ELK / EFK
  • Loki + Grafana
  • Fluent Bit

适合:

  • 多台 CentOS 服务器
  • 需要可视化、告警

六、常见坑提醒

✅ 日志一定要带 时间 + 级别
✅ 不要全打 fmt.Println
❌ 不要在生产开 DEBUG
✅ 用 log.SetOutput 或日志库控制输出文件


如果你能告诉我:

  • 日志是 文件 / systemd / docker
  • 用的 什么日志库
  • 想过滤 什么内容

我可以直接给你一条精准命令或代码。

0 踩