温馨提示×

centos如何过滤golang日志

小樊
36
2026-09-27 07:15:00
栏目: 编程语言

在 CentOS 上“过滤 Golang 日志”通常分为几种常见场景,下面按使用方式给你系统说明,你可以按需选择。


一、用命令行实时过滤(最常用)

1. 使用 grep 过滤

如果 Golang 程序日志输出到文件或终端:

# 过滤包含 ERROR 的日志
grep "ERROR" app.log

# 实时跟踪日志并过滤
tail -f app.log | grep "ERROR"

# 多个关键字(ERROR 或 WARN)
tail -f app.log | grep -E "ERROR|WARN"

# 排除某些日志
tail -f app.log | grep -v "healthcheck"

2. 使用 journalctl(systemd 管理的服务)

如果 Golang 程序是通过 systemd 启动的:

# 查看服务日志
journalctl -u your-go-service

# 实时过滤 ERROR
journalctl -u your-go-service -f | grep ERROR

# 按时间过滤
journalctl -u your-go-service --since "2026-01-21 10:00"

二、Golang 日志格式结构化(推荐)

如果你的日志是 JSON 格式(如 logrus、zap):

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

1. 使用 jq 过滤

tail -f app.log | jq 'select(.level=="error")'

安装 jq:

yum install jq -y

三、日志级别控制(从代码层面)

1. 使用 logrus

log.SetLevel(log.InfoLevel) // 只输出 info 及以上

2. 使用 zap

cfg := zap.NewProductionConfig()
cfg.Level = zap.NewAtomicLevelAt(zap.InfoLevel)

四、使用日志采集工具(生产环境)

1. rsyslog

yum install rsyslog -y

配置示例:

if $programname == 'yourapp' and $msg contains 'ERROR' then /var/log/go_error.log

2. filebeat + ELK

适合大规模日志分析。


五、常见过滤示例汇总

需求 命令
实时看错误 `tail -f app.log
看某时间 grep "2026-01-21 10" app.log
排除心跳 grep -v healthcheck
JSON 错误 jq 'select(.level=="error")'

如果你能告诉我:

  • 日志是 文件 / systemd / docker
  • 是否 JSON 格式
  • 使用的 日志库(log / logrus / zap)

我可以给你更精准的方案。

0 踩