温馨提示×

centos怎过滤golang日志

小樊
49
2026-09-15 06:11:00
栏目: 编程语言

在 CentOS 上“过滤 Golang 日志”通常分几种场景,下面按常见情况给你说明。


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

1. 日志在文件里(如 app.log

tail -f app.log | grep "ERROR"

过滤多个关键字(OR):

tail -f app.log | grep -E "ERROR|PANIC|FATAL"

排除某些日志(NOT):

tail -f app.log | grep -v "healthcheck"

按时间过滤(如今天):

grep "2026-01-15" app.log | grep "ERROR"

2. 日志是 JSON 格式(Go 常用)

如果 Golang 用 logrus / zap 输出 JSON:

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

只看某字段:

tail -f app.log | jq '.msg'

二、使用 journalctl(systemd 服务)

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

journalctl -u your-service -f

过滤 ERROR:

journalctl -u your-service | grep ERROR

按时间:

journalctl -u your-service --since "2026-01-15 10:00"

三、在 Golang 代码层过滤(推荐)

1. 使用 logrus

log.SetLevel(log.WarnLevel) // 只输出 warn/error

2. 使用 zap

logger, _ := zap.NewProduction()
logger.Error("something error")

四、用 loki / ELK(生产环境)

如果是服务器集群:

  • Loki + Promtail + Grafana
  • ELK(Elasticsearch + Filebeat)

过滤示例(Loki):

{job="go-app"} | json | level="error"

五、常见坑提醒

  • Go 日志如果带颜色码,grep 可能看不到 → 用 grep --line-buffered
  • 高并发日志建议 结构化日志(JSON),方便过滤
  • 不要在代码里 fmt.Println 打日志

如果你能补充:

  • 日志是 文件 / systemd / docker
  • 是否 JSON 格式
  • 想按 级别 / 关键字 / 时间 过滤

我可以给你更精确的命令。

0