背景:对外提供的接口使用过滤器TraceLogProviderFilter打印了请求相关的日志信息,所以可以根据日志中的关键词TraceLogProviderFilter来统计接口请求次数
日志打印格式
2020-02-23 12:06:49.156 INFO [com.zkh360.service.punchout.filter.TraceLogProviderFilter] [44295083-2cb8-436d-b976-e743985f25e4](DubboServerHandler-thread-440:[]) 【请求方法:getProductPrice,请求参数:"P88069",["HT2895"],,提供者耗时:19ms】;
需求:统计接口每日调用次数
一、grep
命令格式:grep -c 关键词 日志文件
说明:-c 符合样式的行数
root@iZbp1crt1zqre1ar8:/HD/logs/punchout# grep -c 'TraceLogProviderFilter' punchout.log
154621
root@iZbp1crt1zqre1ar8:/HD/logs/punchout#
二、grep和wc结合
命令格式:grep 关键词 日志文件 | wc -l
说明:grep 查找,wc -l 统计行数,配置使用表示按行统计关键词出现的次数,一行出现多次只算一次,此命令可以针对一行中会多次出现搜索词的查询
root@iZbp1crt1zqre1ar8:/HD/logs/punchout# grep 'TraceLogProviderFilter' punchout.log | wc -l
146134
root@iZbp1crt1zqre1ar8:/HD/logs/punchout#
三、zgrep
命令格式:grep 关键词 日志文件 | wc -l
说明:由于日志文件很大,现在很多日志都会每天按大小切分,并以压缩格式保存,这类文件就需要使用zgrep来统计
root@iZbp1crt1zqre1ar8:/HD/logs/punchout# zgrep -c 'TraceLogProviderFilter' punchout.2020-02-23_1.log.gz
274647
root@iZbp1crt1zqre1ar8:/HD/logs/punchout# zgrep -c 'TraceLogProviderFilter' punchout.2020-02-23_*.log.gz
punchout.2020-02-23_1.log.gz:274647
punchout.2020-02-23_2.log.gz:274995
root@iZbp1crt1zqre1ar8:/HD/logs/punchout#
如果日志有切分,可以使用匹配符*来统计