java读取报文时输出相应的

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"}]