java Log日志分析辅助工具类

在分析有一些比较复杂的问题时,比如我只想从海量的日志中分析某个接口功能或者某台机器发起的请求和响应,这时候只用肉眼是不行的,必须对日志进行分析,把自己需要的日志都复制到另外的文本文件中才可以进行一目了然的分析,此外涉及到利用依据数学统计运算的一些功能写程序来实现要比靠肉眼靠谱多了。

一个小小的例子,粘出来,一来自己做个标记,二来送给需要的人。

实现了部分日志分析的工具类源码

package mongo.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

public class LogTest {
	public static void main(String[] args) throws IOException {
		System.out.println(getGoodsCount());
	}
	
	
	
	public static int getGoodsCount() throws IOException{
		
		InputStream inf = new FileInputStream("f:" + File.separator+"machine"+File.separator+"newLog"+File.separator+"test.log.1");
		BufferedReader reader= new BufferedReader(new InputStreamReader(inf,"utf-8"));
         String line="";
         //[request]----[//machine/updateOrderGoods]----【machId=Z081605010009		"pickupWay":"01005"}
         //[response]----[//machine/updateOrderGoods]----【machId=Z081605010009
         String machineId="Z081605010001";
         int sum_count=0;
         while((line=reader.readLine())!=null){
        	 line=line+"\r\n";
        	 if(line.contains("[response]----[//machine/updateOrderGoods]----【machId="+machineId)){
        		 //计算出货成功的件数
        		 if(line.contains("\"goodsRemain\":\"0\",\"vipStartDate\":\"\",\"goodsBarcode\":\"0002\"")){
        			 int start=line.indexOf("\"goodsBarcode\":\"0002\",\"goodsPrice\":\"10.00\",\"goodsCount\":\"");
        			 int end=line.indexOf(",\"vipFlag\":\"0\",\"vipEndDate\":\"\",\"goodsName\":\"好运十倍");
        			 int count=Integer.parseInt(line.substring(start+57,end-1));
        			 sum_count+=count;
        		 }
        	 }
         }
         reader.close();
         return sum_count;
	}
	
	
	
	public static void createFile() throws Exception{
		InputStream inf = new FileInputStream("f:" + File.separator+"machine"+File.separator+"info.log.6");
		BufferedReader reader= new BufferedReader(new InputStreamReader(inf,"utf-8"));
		
		OutputStream outf = new FileOutputStream("f:" + File.separator+"machine"+File.separator+"test.log.6");
		BufferedWriter out=new BufferedWriter(new OutputStreamWriter(outf,"utf-8"));//如果文件不存在会自动创建
		
         String line="";
         //[request]----[//machine/initiativeUpdateGoods]----【machId=Z081605010023   //"machWayId":"01003"
         //[response]----[//machine/initiativeUpdateGoods]----【machId=Z081605010023
         
         //[request]----[//machine/updateOrderGoods]----【machId=Z081605010009		"pickupWay":"01005"}
         //[response]----[//machine/updateOrderGoods]----【machId=Z081605010009
        
         String machineId="Z081605010001";
         String machWayId="01002";
         boolean flag=false;
         while((line=reader.readLine())!=null){
        	 System.out.println(line);
        	 line=line+"\r\n";
        	 boolean isWrite=false;
        	 
        	 
        	 if(line.contains("[request]----[//machine/initiativeUpdateGoods]----【machId="+machineId)){
        		 if(line.contains("\"machWayId\":\""+machWayId+"\"")){
        			 flag=true;
        			 isWrite=true;
        		 }
        	 }else if(line.contains("[response]----[//machine/initiativeUpdateGoods]----【machId="+machineId)&&flag){
        		 isWrite=true;
        		 flag=false;
        	 }else 
        		 
        		 if(line.contains("[request]----[//machine/updateOrderGoods]----【machId="+machineId)){
        		 if(line.contains("\"pickupWay\":\""+machWayId+"\"")){
        			 flag=true;
        			 isWrite=true;
        		 }
        	 }else if(line.contains("[response]----[//machine/updateOrderGoods]----【machId="+machineId)&&flag){
        		 isWrite=true;
        		 flag=false;
        		 //计算出货成功的件数
        		 if(line.contains("\"goodsRemain\":\"0\",\"vipStartDate\":\"\",\"goodsBarcode\":\"0002\"")){
        			 int start=line.indexOf("\"goodsBarcode\":\"0002\",\"goodsPrice\":\"10.00\",\"goodsCount\":\"");
        			 int end=line.indexOf("\",\"vipFlag");
        			 String count=line.substring(start+57,end);
        			 System.out.println(count);
        		 }
        	 }
        	 
        	 if(isWrite){
        		 out.write(line);
        	 }
         }
         
         reader.close();
         out.close();
	}
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值