log报文文件中,每一条报文占一行 比如我想截取【HEART】-1265681417649654475这一条报文应该怎么写代码呢
2017-02-05 13:16:25.055 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:152] - [HEART|-1265681417649654475|OUT|2017-02-05 13:16:25][{"data":{"jmNum":0,"jmlist":[]},"status":"ok"}]
2017-02-05 13:16:26.001 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:135] - [HEART|7633724691709815000|IN|2017-02-05 13:16:26|40|26577|40|0][{"aab301":"330099","aaz107":"1013","beginTime":"20170205 13:16:26","data":{"curnum":40},"district":"","mac":"","tradeCode":"1001"}]
2017-02-05 13:16:26.052 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:152] - [HEART|7633724691709815000|OUT|2017-02-05 13:16:26][{"data":{"jmNum":0,"jmlist":[]},"status":"ok"}]
2017-02-05 13:16:27.001 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:135] - [HEART|-7267005443617238443|IN|2017-02-05 13:16:27|40|26577|40|0][{"aab301":"330099","aaz107":"1013","beginTime":"20170205 13:16:27","data":{"curnum":40},"district":"","mac":"","tradeCode":"1001"}]
2017-02-05 13:16:27.071 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:152] - [HEART|-7267005443617238443|OUT|2017-02-05 13:16:27][{"data":{"jmNum":0,"jmlist":[]},"status":"ok"}]
2017-02-05 13:16:28.001 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:135] - [HEART|-5108199511757646388|IN|2017-02-05 13:16:28|40|26577|40|0][{"aab301":"330099","aaz107":"1013","beginTime":"20170205 13:16:28","data":{"curnum":40},"district":"","mac":"","tradeCode":"1001"}]
2017-02-05 13:16:28.049 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:152] - [HEART|-5108199511757646388|OUT|2017-02-05 13:16:28][{"data":{"jmNum":0,"jmlist":[]},"status":"ok"}]
2017-02-05 13:16:29.001 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:135] - [HEART|9003676052870147784|IN|2017-02-05 13:16:29|40|26577|40|0][{"aab301":"330099","aaz107":"1013","beginTime":"20170205 13:16:29","data":{"curnum":40},"district":"","mac":"","tradeCode":"1001"}]
2017-02-05 13:16:29.064 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:152] - [HEART|9003676052870147784|OUT|2017-02-05 13:16:29][{"data":{"jmNum":0,"jmlist":[]},"status":"ok"}]
2017-02-05 13:16:30.001 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:135] - [HEART|4637980612416808637|IN|2017-02-05 13:16:30|40|26577|40|0][{"aab301":"330099","aaz107":"1013","beginTime":"20170205 13:16:30","data":{"curnum":40},"district":"","mac":"","tradeCode":"1001"}]
2017-02-05 13:16:30.047 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:152] - [HEART|4637980612416808637|OUT|2017-02-05 13:16:30][{"data":{"jmNum":0,"jmlist":[]},"status":"ok"}]
2017-02-05 13:16:31.001 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:135] - [HEART|-642409544707952207|IN|2017-02-05 13:16:31|40|26577|40|0][{"aab301":"330099","aaz107":"1013","beginTime":"20170205 13:16:31","data":{"curnum":40},"district":"","mac":"","tradeCode":"1001"}]
2017-02-05 13:16:31.054 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:152] - [HEART|-642409544707952207|OUT|2017-02-05 13:16:31][{"data":{"jmNum":0,"jmlist":[]},"status":"ok"}]
可以考虑用正则表达式截取你想要的字符串,比如像下面这样:
String str = "2017-02-05 13:16:25.055 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:152] - [HEART|-1265681417649654475|OUT|2017-02-05 13:16:25][{\"dat";
Pattern p = Pattern.compile("\[HEART\|-\d*");
Matcher m = p.matcher(str);
if (m.find()) {
System.out.println(m.group(0));
}
package com.zzk.io;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ReadTxt {
public static String readfile(File file) {
StringBuilder sb = new StringBuilder();
try {
InputStream in = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
String buff = "";
while ((buff = br.readLine()) != null) {
sb.append(buff);
sb.append("\n");
}
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sb.toString();
}
public static void find(File file,String target){
String source = readfile(file);
Pattern patten = Pattern.compile("\\d{4}-\\d{2}-\\d{2}\\s*\\d{2}:\\d{2}:\\d{2}\\.\\d+.*");
Matcher matcher = patten.matcher(source);
StringBuilder result = new StringBuilder("");
while(matcher.find()){
if(matcher.group(0).contains(target)){
result.append(matcher.group(0));
result.append("\n");
}
}
if(result.length()>0){
System.out.println("找到日志:"+target+"==>>"+"\n"+result);
}else{
System.out.println("未找到该日志");
}
}
public static void main(String[] args) {
//目标文件
File file = new File("f:" + File.separator + "aaa.txt");
find(file,"9003676052870147784");
}
}
找到日志:9003676052870147784==>>
2017-02-05 13:16:29.001 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:135] - [HEART|9003676052870147784|IN|2017-02-05 13:16:29|40|26577|40|0][{"aab301":"330099","aaz107":"1013","beginTime":"20170205 13:16:29","data":{"curnum":40},"district":"","mac":"","tradeCode":"1001"}]
2017-02-05 13:16:29.064 INFO [pool-2-thread-1][AutoTaskServiceImpl.java:152] - [HEART|9003676052870147784|OUT|2017-02-05 13:16:29][{"data":{"jmNum":0,"jmlist":[]},"status":"ok"}]