2012-10-02 79 views
3

我正在尋找一種方法來將所有logcat輸出(按標記篩選)保存在手機內存/ SD卡中。 所以,即使有人在使用應用程序,會來找我說它崩潰,或者它不能按預期工作,我可以查看日誌。我目前使用RemoteLogs,但他們不處理標準的logcat輸出。SDCard上的Logcat輸出

+0

這是一個好主意:p – keyser

+0

可能的重複[如何將我的日誌輸出從logcat重定向到Android設備上的SD卡?](http://stackoverflow.com/questions/3359692/how-to- redirect-my-log-output-from-logcat-to-the-sd-card-on-an-android-device) – Narkha

回答

2

我認爲這不是直接可能的。你可以這樣做是爲了覆蓋標準Log.x()方法,這樣

class MyLog { 
    boolean sdLog = false; 

    public void d(String arg1, String arg2) { 
    if (sdLog) { 
     someLogFile.append(arg1).append(":").append(arg2); 
    } 
    else { 
     Log.d(arg1,arg2); 
    } 
    } 
} 

,然後在你的代碼替換所有調用Log.d()通過調用MyLog.d()什麼。用戶然後可以例如在首選項中選擇登錄到SD卡或使用標準機制。

通常,所有記錄到SD卡的東西都不是由Android選擇的(afair),因爲這意味着大量寫入卡,這會減少它的使用壽命。

+0

很好,這是我需要的,順便說一下,我可以製作靜態緩衝區以減少對SDCard的寫入。另外,我認爲可以在應用程序崩潰時編寫緩衝區(遠程日誌,處理應用程序崩潰,因此可能)。在下一個應用程序中,我將使用此解決方案,用於測試/調試目的 – Drake29a

0

您可以簡單地轉儲logcat並通過執行諸如sh -c logcat -d -v time > /sdcard/logcat.txt之類的操作將其保存到文件中。事實上,Market/Play商店上有應用程序可以做到這一點,並允許您通過電子郵件等共享logcat。指示您的用戶使用其中一個應用程序(例如LogCollector)發送可能是個好主意你的日誌。更好的主意是使用ACRA或BugSense監視應用程序崩潰以及環境信息(Android版本,屏幕大小等)。請記住,由於Jelly Bean(4.1)只能在設備上運行此應用程序(通過adb運行時具有更多權限並可以獲取所有日誌)時才能訪問您自己的logcat輸出(即從正在執行的應用程序包)像之前一樣)。

另一種想法是不使用Log.x(),而是寫入您自己的日誌文件。最近的ACRA版本能夠發送這個文件的內容以及崩潰報告。