当前位置: 首页 > 后端技术 > PHP

awk进行php日志累计错误统计

时间:2023-03-29 20:29:07 PHP

问题是通过tail-f/var/log/error_web*可以查看100多台在线服务器,滚动速度太快,不方便定位问题。按照前辈的观察方法』,作为新人,确实很难,所以用了awk命令格式化输出格式。思路是通过awk命令对tail每一行获取的日志进行处理,利用awk的BEGIN全局特性累计报错数。解决方案我们从执行tail命令开始,累计所有报错的接口地址。对于每一个报错,先输出累计的报错数,这样我们就可以快速的看出哪个接口的报错量最大。效果如下错误数:33链接:[REQUEST_URI:xxxxxxxxxxxxxx[04-Jul-201718:32:20PRC]95169011-595b6eb3b12291.18851925PHP警告:我们看log.sh文件tail的代码——f/var/log/error_web*|grep。|grep-v'==>'|awk'#定义全局变量,也就是awk命令的BEGIN用法,还有一个END可以搜索BEGIN{#每个接口报错的次数errorTimes[0]=0;#错误详情errorDetails[0]=0;#错误总数errorCount=0;}{#格式化当前行的内容获取URL#获取最后一个字段,这里可以搜索awk命令内置的NFVariableurl=$NF;#去掉获取到的url后的参数split(url,urlFields,"?");url=urlFields[1];#报告的错误数+1errorTimes[url]=errorTimes[url]+1;print("错误数量:"errorTimes[url]"链接:"url);#这里是打印错误的详细信息print($0);打印(””);#增加总次数errorCount=errorCount+1;}'