数据格式如下:
2014-09-11 10:51:19:854 INFO [http-20002-1] com.lietou.common.utility.MonitorLogger | #log_search_cv#20140911#1938196#130
2014-09-11 10:51:37:280 INFO [http-20002-1] com.lietou.common.utility.MonitorLogger | #log_search_cv#20140911#1938196#130
2014-09-11 11:02:22:680 INFO [http-20002-1] com.lietou.common.utility.MonitorLogger | #log_search_cv#20140911#1938196#132
2014-09-11 11:02:28:236 INFO [http-20002-1] com.lietou.common.utility.MonitorLogger | #log_search_cv#20140911#1938196#132
2014-09-11 11:02:56:308 INFO [http-20002-1] com.lietou.common.utility.MonitorLogger | #log_search_cv#20140911#1938196#132
2014-09-11 10:51:44:341 INFO [http-20002-2] com.lietou.common.utility.MonitorLogger | #log_view_cv#20140911#1938196#130
2014-09-11 10:51:56:738 INFO [http-20002-2] com.lietou.common.utility.MonitorLogger | #log_view_cv#20140911#1938196#130
2014-09-11 10:52:40:125 INFO [http-20002-1] com.lietou.common.utility.MonitorLogger | #log_view_cv#20140911#1938196#130
2014-09-11 10:52:47:203 INFO [http-20002-1] com.lietou.common.utility.MonitorLogger | #log_view_cv#20140911#1938196#130
2014-09-11 10:53:32:243 INFO [http-20002-1] com.lietou.common.utility.MonitorLogger | #log_view_cv#20140911#1938196#130
2014-09-11 10:53:43:559 INFO [http-20002-2] com.lietou.common.utility.MonitorLogger | #log_view_cv#20140911#1938196#130
2014-09-11 10:51:53:834 INFO [http-20002-2] com.lietou.common.utility.MonitorLogger | #log_buy_cv#20140911#1938196#1
2014-09-11 10:52:47:048 INFO [http-20002-1] com.lietou.common.utility.MonitorLogger | #log_buy_cv#20140911#1938196#1
2014-09-11 10:53:43:412 INFO [http-20002-2] com.lietou.common.utility.MonitorLogger | #log_buy_cv#20140911#1938196#1
参数说明:
1:具体时间;2:业务标识;3:具体日期;4:用户ID;5:不同类型
(每天记录一个日志文件)
需求1:
统计猎头不同业务的每天日志数量前10名
awk -F "#" '{if($2=="log_view_cv") {w[$2" "$4]++}} END{for(a in w) {print a, w[a]}}' debug.log | sort -k3nr | head -n 10> dest.txt
需求2:
统计猎头不同业务的每天不同类型的日志数量前10名
awk -F "#" '{if($2=="log_search_cv") {w[$2" "$4" "$5]++}} END{for(a in w) {print a, w[a]}}' debug.log | sort -k4nr | head -n 10
需求3:
统计猎头不同业务的每天具体类型的日志数量前10名
more aaa | awk -F "#" '{if($2=="log_search_cv" && $5=="2") {w[$2" "$4]+=1}} END{ for (a in w) {print a, w[a]}}' | sort -k3nr | head -n 10
注意AWK语句:
awk -F "#" '{if($2=="log_buy_cv") {w[$2" "$4]+=1}} END{ for (a in w) {print a, w[a]}}' aaa | sort -k3nr | head -n 10 > dest.txt
这条语句的意思是以"|"分割域值,第二列元素为"log_buy_cv" ,group by $2,$4 统计总数量,按输出第三列即统计的总数量倒序排列获取最大的10条数据,输出到指定的文件dest.txt里面,如果不写>dest.txt,则是把得到的结果直接输出到屏幕显示器上。这些统计元素来源于文件aaa。 特别注意:排序sort -k3nr,如果数量小于10,sort -k3r也可以,但是一旦涉及到大于10,不加n不会给出正确的排序结果的。
awk -F "#" '{if($2=="log_search_cv") {w[$2" "$4" "$5]++}} END{for(a in w) {print a,w[a]}}' 5*/debug/debug.log.2014-09-23 | sort -k4nr | head -n 20
统计所有以5开头机器日志记录