我有一个日志文件,如下所示:
TxID=JM-70106-7001-20150803150010-588177-ITP-5793501-JM013MJBT458T
TxIN =JM7001 20150803150010588177ITP57935015793570185JM013MJBT458T RCOLE012 EITP7010600000
InitTX=1
LogTX=1
ProcessTX=0
DeliverTX=0
LogTX=0
DeliverTXstats=0
TXstat=Request TX Complete
TxOUT=JM7001 20150803150010588177ITP57935015793570185JM013MJBT458T RCOLE012 EITP7010600000
}]
TxID=JM-70106-7001-20150803150010-588177-ITP-5793501-JM013MJBT458T
TxIN =JM7002 20150803150010588177ITP57935015793570185JM013MJBT458T RCOLE012 EITP7010600000
InitTX=0
LogTX=0
ProcessTX=0
DeliverTX=1
LogTX=2
DeliverTXstats=0
TXstat=Response TX Complete
TxOUT=JM7002 20150803150010588177ITP57935015793570185JM013MJBT458T RCOLE012 EITP7010600000
}]
我需要根据以下条件使用Java程序从日志文件中提取成功的请求和响应原始消息: 1.扫描具有“TxID = ...”
的行查看下一个第8行是否有“TXstat =请求TX完成”。如果是这样,请立即获取下一行,这是一条成功的原始请求消息。
从步骤1中扫描具有相同TxID = ...的行,并检查“TXstat = Response TX Complete”的行。
获取与步骤2中找到的请求相对应的下一行成功回复。
重复步骤1~4以查找所有成功的请求和响应消息,并将它们放在单独的Request和Response输出文件中。
我编写了一段代码但不确定如何满足所有条件。
代码的主要部分:
public static void main(String [] args)抛出IOException {
prop=GetReqResRawMsg.readPropertiesFile();
String line;
String brokerInputFileName=prop.getProperty("brokerInputFileName");
String brokerRequestFileName=prop.getProperty("brokerRequestFileName");
//String brokerReponseFileName=prop.getProperty("brokerResponseFileName");
try(BufferedReader reqReader1 = new BufferedReader(new InputStreamReader(new FileInputStream(brokerInputFileName)));
BufferedReader reqReader2 = new BufferedReader(new InputStreamReader(new FileInputStream(brokerInputFileName)));
FileWriter fileWriter=new FileWriter(brokerRequestFileName);
){
while((line=reqReader1.readLine())!=null){
//System.out.println(line);
Scanner request=new Scanner(line).useDelimiter("TxID");
while(request.hasNextLine()){
String txOut=request.nextLine();
String reqOut;
if(txOut.indexOf("TXstat=Request TX Complete")!=-1)
{
reqOut=reqReader1.readLine();
if(reqOut.indexOf("TxOUT")!=-1){
String[] splitreqOut=reqOut.split("=");
String reqRawMess=splitreqOut[1];
fileWriter.write(reqRawMess);
fileWriter.append("\n");
}
}
}
}
}
}
感谢任何帮助!!
此致 KARTHIK