相信大家都很喜欢用grep指令,查一下项目中有没有出错的,然后通过logid搜索相关出错的日志和一些关键参数,但是在多行日志的情况下就很难处理了,比如okhttp拦截器中分别打印了url,param和response,然后你想统计一下有多少成功的,有多少失败的,发现就比较难了。

解决这个问题的方法,大多数选择在打印日志的时候做处理,把所需要的日志打印到一个行上,但是可能body中的json有换行,或合并后的日志过长,对阅读性增加了更多挑战。能解决但不优雅!今天给大家推荐一个新的方法,ggrep指令!

ggrep是group grep的缩写,意思是将数据分组匹配。然后可以通过多个表达式匹配指定的日志数据。

ggrep指令安装:

gitee:

/bin/bash -c "$(curl -fsSL https://gitee.com/bobby96333/ggrep/raw/main/install.sh)"

or github

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/lingdor/ggrep/HEAD/install.sh)"

or 源码安装

git clone https://github.com/lingdor/ggrep.git
go build ./
sudo cp ggrep /usr/local/bin/

CASE1: 对okhttp的多行数据url,param和response过滤输出:

ggrep --smart-logid --grep 'OkHttpUtil print: --> POST' --grep 'OkHttpUtil print: {' --grep 'OkHttpUtil print: {"return_code' --orderly-match --color always *.info |head

CASE2 对多行日志进行并行,然后可以通过awk,grep,wc等脚本进行二次处理

ggrep --smart-logid --grep 'OkHttpUtil print: --> POST' --grep 'OkHttpUtil print: {' --grep 'OkHttpUtil print: {"return_code' --orderly-match --merge-lines --color always *.info |head

CASE3 将整组数据打印:

ggrep --smart-logid -grep 'OkHttpUtil print: --> POST' --print-group *.info |head -n 100

CASE4 并行处理

./ggrep --smart-logid --grep 'LOG1' --grep 'LOG2' --full-match --parallel-count 0 --color always ./demo/demo.log

CASE5 多条件and匹配

ggrep
./ggrep --smart-logid --grep 'LOG1' --grep 'LOG2' --full-match --color always ./demo/demo.log

输入:

20240119 LogId[111] LOG1
20240119 LogId[111] LOG2
20240119 LogId[111] LOG3
20240119 LogId[111] LOG2
50240119 LogId[222] LOG1

输出:

20240119 LogId[111] LOG1
20240119 LogId[111] LOG2

ggrep让多行日志-无处遁形!的更多相关文章

  1. Python正则处理多行日志一例

    正则表达式基础知识请参阅<正则表达式基础知识>,本文使用正则表达式来匹配多行日志并从中解析出相应的信息. 假设现在有这样的SQL日志: SELECT * FROM open_app WHE ...

  2. Logstash——multiline 插件,匹配多行日志

    本文内容 测试数据 字段属性 按多行解析运行时日志 把多行日志解析到字段 参考资料 在处理日志时,除了访问日志外,还要处理运行时日志,该日志大都用程序写的,比如 log4j.运行时日志跟访问日志最大的 ...

  3. Python正则处理多行日志一例(可配置化)

    正则表达式基础知识请参阅<正则表达式基础知识>,本文使用正则表达式来匹配多行日志并从中解析出相应的信息. 假设现在有这样的SQL日志: SELECT * FROM open_app WHE ...

  4. ELK显示多行日志

    1.默认,logstash对日志文件的选取是以单行为单位的:但像log4j这种输出日志经常会是以时间头开始的多行日志: 2.显示多行,需要配置logstash的config: input { file ...

  5. 原!tomcat启动超时(打印了几行日志,后面没了。也不报错,处于启动状态,直到超时)

    项目框架:spring+struts2+mybatis 今天优化代码,改了一堆mybatis dao和xml文件,启动项目时,就出现如标题描述的状况:打印了几行日志,后面就不打印了,也不报错,处于启动 ...

  6. Logstash-安装logstash-filter-multiline插件(解决logstash匹配多行日志)

    ELK-logstash在搬运日志的时候会出现多行日志,普通的搬运会造成保存到ES中日志一条一条的保存,很丑,而且不方便读取,logstash-filter-multiline可以解决该问题. 接下来 ...

  7. K8S学习笔记之filebeat采集K8S微服务java堆栈多行日志

    0x00 背景 K8S内运行Spring Cloud微服务,根据定制容器架构要求log文件不落地,log全部输出到std管道,由基于docker的filebeat去管道采集,然后发往Kafka或者ES ...

  8. Logstash——multiline 插件,匹配多行日志

    本文内容 测试数据 字段属性 按多行解析运行时日志 把多行日志解析到字段 参考资料 在处理日志时,除了访问日志外,还要处理运行时日志,该日志大都用程序写的,比如 log4j.运行时日志跟访问日志最大的 ...

  9. 使用 Filebeat 对多行日志进行处理(multiline)

    Filebeat 收集日志的过程中,默认是按行收取的,也就是每一行都会默认是一个单独的事件并添加时间戳.但是在收集一些特殊日志的时候,往往一个事件包含有多行,例如 Java 的堆栈跟踪日志: 20-0 ...

  10. logstash处理多行日志-处理java堆栈日志

    logstash处理多行日志-处理java堆栈日志 一.背景 二.需求 三.实现思路 1.分析日志 2.实现,编写pipeline文件 四.注意事项 五.参考文档 一.背景 在我们的java程序中,经 ...

随机推荐

  1. 应用数仓ODBC前,这些问题你需要先了解一下

    摘要:ODBC为解决异构数据库间的数据共享而产生的,现已成为WOSA的主要部分和一种数据库访问接口标准. 本文分享自华为云社区<GaussDB(DWS) ODBC 问题定位指南>,作者: ...

  2. 云小课|大数据时代的隐私利器-GaussDB(DWS)数据脱敏

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 数据仓库服务Ga ...

  3. 火山引擎 DataTester 首推 A/B 实验经验库,帮助企业高效优化实验设计能力

      更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,火山引擎 DataTester 推出了重要功能--A/B 实验经验库. 基于在字节跳动已完成 150 万 ...

  4. Intellij idea 生成带注释的get/set

    自带的 Alt+ Insert 中的 Getter and  Setter 生成的属性,不能将 private 字段中的注释带过去,比较尴尬.可以通过两种试. 1. 修改模板:这种方法不能得到 pri ...

  5. django DRF

    博客目录 web应用模式 api接口 接口测试工具postman restful规范 drf安装 序列化和反序列化 CBV源码分析 drf之APIView分析 drf之Request对象分析 drf- ...

  6. 从数据链路到神秘的MAC地址和ARP协议

    引言 链路是指从一个结点到相邻结点的一段物理线路.数据链路是在链路的基础上增加了一些必要的硬件和软件.这些硬件包括网络适配器,而软件则包括协议的实现.在网络中,主机.路由器等设备都必须实现数据链路层. ...

  7. Sentinel 是如何做限流的

    限流是保障服务高可用的方式之一,尤其是在微服务架构中,对接口或资源进行限流可以有效地保障服务的可用性和稳定性. 之前的项目中使用的限流措施主要是Guava的RateLimiter.RateLimite ...

  8. 函数计算 FC 3.0 发布,全面降价,最高幅度达93%,阶梯计费越用越便宜

    作为国内最早布局 Serverless 的云厂商之一,阿里云在 2017 年推出函数计算 FC,开发者只需编写代码并上传,函数计算就会自动准备好相应的计算资源,大幅简化开发运维过程.阿里云函数计算持续 ...

  9. 重磅发布丨从云原生到 Serverless,先行一步看见更大的技术想象力

    (2022 云原生实战峰会) 2022年12月28日,以"原生万物 云上创新"为主题的第三届云原生实战峰会在线上举行. 会上,阿里云提出激活企业应用构建三大范式,并发布云原生可观测 ...

  10. 元素scroll系列属性

    scroll翻译过来,就是滚动的,我们使用scroll系列的相关属性可以动态的得到该元素的大小.滚动距离等. scroll系列属性 作用 element.scrollTop 返回被卷上去的上侧距离,返 ...