2013-01-19 42 views
1

我想將我的應用程序logcat事件保存在SD卡上的文本文件中。 我的驚人的應用程序在我的和我的朋友設備中正常工作,但其他應用程序有錯誤。 例如,他們說在應用程序中的警報是在錯誤的時間,但我沒有看到我和我的朋友設備中的這個錯誤。 由於這個問題和其他問題,我想保存所有事件logcat相關我的應用程序,atomatically。所以他們發送日誌文件給我解決問題。 我該怎麼做? 謝謝 對不起我的英文不好在sd上的文件中保存應用程序事件(logcat)

+0

可能重複:// stackoverflow.com/questions/3359692/how-to-redirect-my-log-output-from-logcat-to-the-sd-card-on-an-android-device) – Narkha

回答

3

您可以通過以下獲得的logcat:

static final int BUFFER_SIZE = 1024; 

public String getLogCat() { 
    String[] logcatArgs = new String[] {"logcat", "-v", "time"}; 

    Process logcatProc = null; 
    try { 
     logcatProc = Runtime.getRuntime().exec(logcatArgs); 
    } 
    catch (IOException e) { 
     return null; 
    } 

    BufferedReader reader = null; 
    String response = null; 
    try { 
     String separator = System.getProperty("line.separator"); 
     StringBuilder sb = new StringBuilder(); 
     reader = new BufferedReader(new InputStreamReader(logcatProc.getInputStream()), BUFFER_SIZE); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line); 
      sb.append(separator); 
     } 
     response = sb.toString(); 
    } 
    catch (IOException e) { 
    } 
    finally { 
     if (reader != null) { 
      try { 
       reader.close(); 
      } 
      catch (IOException e) {} 
     } 
    } 

    return response; 
} 

可以那麼這String保存的SD卡。

+0

我如何過濾logcat到我的應用程序? –

+2

將這些標籤作爲附加參數添加到logcatArgs例如{「logcat」,「-v」,「time」,「YourTag:V AnotherTag:V MoreTag:V *:S」};你指出你想要的等級之後:(在這種情況下詳細標籤:V)和*:S使其他一切都保持沉默。 – Dororo

+0

我該如何動態地做到這一點? –

1

這種類型的功能已經由ACRA Android庫實現。該庫檢測崩潰,並將崩潰信息發送到Google文檔電子表格或您自己的目的地。

+0

我不能去ACRA鏈接,因爲谷歌攔截它爲我的IP。和我的應用程序沒有崩潰,我的應用程序工作報警錯誤。 –

1

您可以通過以下獲得的logcat:

static final int BUFFER_SIZE = 1024; 

public String getLogCat() { 
    String[] logcatArgs = new String[] {"logcat", "-v", "time"}; 

    Process logcatProc = null; 
    try { 
     logcatProc = Runtime.getRuntime().exec(logcatArgs); 
    } 
    catch (IOException e) { 
     return null; 
    } 

    BufferedReader reader = null; 
    String response = null; 
    try { 
     String separator = System.getProperty("line.separator"); 
     StringBuilder sb = new StringBuilder(); 
     reader = new BufferedReader(new InputStreamReader(logcatProc.getInputStream()), BUFFER_SIZE); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line); 
      sb.append(separator); 
     } 
     response = sb.toString(); 
    } 
    catch (IOException e) { 
    } 
    finally { 
     if (reader != null) { 
      try { 
       reader.close(); 
      } 
      catch (IOException e) {} 
     } 
    } 

    return response; 
} 

可以那麼這String保存的SD卡。

這個來自「Dororo」的回答對我來說不起作用,因爲它由於多行而始終卡住,但我不知道如何解決這個問題。

1

除非您指定'-d'arg,否則logcat將阻止讀取新日誌。

嘗試

String[] logcatArgs = new String[] {"logcat", "-d", "-v", "time"}; 
1

一個線程中執行,以避免ANR的

[如何從logcat的我的日誌輸出到SD卡重定向在Android設備上?(HTTP的
相關問題