2012-02-15 85 views
0

我需要以編程方式通過過濾器轉儲logcat。我應用adb logcat -s「TAGNAME」,但應用程序只是「掛起」。有一個類似的線程,但有沒有辦法解決:Read filtered log cat(Programmatically)?以編程方式應用logcat過濾器

 try { 
      Process process = Runtime.getRuntime().exec("logcat -s XXX"); 
      BufferedReader bufferedReader = new BufferedReader(
        new InputStreamReader(process.getInputStream())); 

      StringBuilder log = new StringBuilder(); 
      String line; 
      while ((line = bufferedReader.readLine()) != null) { 
       log.append(line); 
       log.append(FragmentLog.LINE_SEPARATOR); 
      } 

      ((TextView) tv).setText(log.toString()); 

     } catch (IOException e) { 
      ((TextView) tv).setText(R.string.default_blank); 
     } 

回答

3

我正在使用另一種方式讓我的應用程序工作。這裏是代碼,以防萬一有人想知道。

try {    
     Process process = Runtime.getRuntime().exec("logcat -d"); 
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); 

     String line; 

     Pattern pattern = Pattern.compile("XXX", 0); 

     while ((line = bufferedReader.readLine()) != null) { 
      if (patternu != null 
        && !pattern.matcher(line).find()) { 
       continue; 
      } 
      log.append(line); 
      log.append('\n'); 
     } 

    } catch (IOException e) { 

    } 
+0

我認爲patternu是拼錯的變量。 – gonzobrains 2013-05-07 23:09:54

+0

執行bufferedReader.readLine()時,我總是得到空值。 – gonzobrains 2013-05-07 23:16:10

+0

按預期工作! – 2015-11-27 06:52:23

2

好第一關此命令將流logcat的,不會倒掉。因此它永遠不會退出運行。另外,如果沒有內容需要報告,BufferedReader可能正在等待完整的線路進入,所以你阻止了。

+0

太好了。以及我需要它來過濾logcat中的一些消息並將其轉儲出去。 – ys126 2012-02-17 07:05:27

相關問題