2013-12-10 58 views
0

我有一個應用程序,我想收集指定級別和標記的LogCat消息。如何在Android應用程序中收集LogCat消息

我可以以某種方式獲得積累的消息在某個點?我不想一個一個收集消息,它應該是他們的總和,就像我用adb讀取實際日誌時一樣。這可能嗎?

+1

請看看我以前的帖子:http://stackoverflow.com/questions/19897628/need-to-handle-uncaught-exception-and-send-log-file –

+0

你的回答似乎是有前途的,特別是* extractLogToFile *。但是,當我在2.3手機上使用以下行:「logcat -d -v MyTAG:v *:S」*時,我總是在* reader.read()*中獲得-1。我應該設置什麼? – Nestor

+0

這可能意味着您在logcat上的過濾將排除所有行。嘗試刪除過濾,看看你是否得到了一些東西。 –

回答

4

試試這個:請注意,在Android的4,你只會看到自己的應用程序被寫入,除非你有root權限的日誌信息。

public static String getLog(Context c) { 
    try { 
     Process process = Runtime.getRuntime().exec("logcat -d"); 
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); 

     StringBuilder log = new StringBuilder(); 
     String line; 
     while ((line = bufferedReader.readLine()) != null) { 
      log.append(line); 
      log.append("\n"); 
     } 

     return log.toString(); 

    } catch (IOException e) { 
     return null; 
    } 
} 
+0

一個非常重要的事情:閱讀日誌需要許可!在清單中使用它:** <使用權限android:name =「android.permission.READ_LOGS」/> ** – Nestor

+0

您不需要此權限就可以在Api 16中收集自己的應用程序日誌。通過hackbod(安卓軟件工程師)看到這篇文章。 https://groups.google.com/d/msg/android-developers/6U4A5irWang/AvZsrTdfICIJ – Kuffs

+0

感謝您的信息。我使用我的日誌收集器從API級別10開始。 – Nestor

相關問題