我試着在Android設備上使用LogCat(它使用的是Android 1.5,不,無法更新它),並且發現它只跟蹤運行時發生的日誌事件。Android應用程序可以看到自己的日誌文件嗎?
應用程序是否可以跟蹤其運行時記錄的所有事件並將它們保存到文件中? (即使沒有自己觸發的)
我試着在Android設備上使用LogCat(它使用的是Android 1.5,不,無法更新它),並且發現它只跟蹤運行時發生的日誌事件。Android應用程序可以看到自己的日誌文件嗎?
應用程序是否可以跟蹤其運行時記錄的所有事件並將它們保存到文件中? (即使沒有自己觸發的)
事實證明,this tutorial描述了一種將系統日誌的副本轉儲到StringBuilder
對象的方法。
代碼從本教程複製:
public class LogTest extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
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);
}
TextView tv = (TextView)findViewById(R.id.textView1);
tv.setText(log.toString());
} catch (IOException e) { }
}
}
請注意,你需要包括權限讀取日誌:
<uses-permission android:name="android.permission.READ_LOGS" />
。
代碼的重要部分是Runtime.getRuntime().exec("logcat -d")
部分。 -d
開關是拋出當前日誌並退出的部分。如果我正確讀取documentation,則理論上應保持logcat
正在運行,並將日誌的連續行轉儲到stdout
,因爲它們出現。
創建一個數據庫和一個可以寫入它的IntentService。
當任何組件想要記錄任何內容時,使用Intent啓動此服務。
我錯過了什麼嗎?
這是我想要注意的系統事件。在觸發意圖啓動活動和活動(應該)出現的時間之間有一些事情正在進行。 – Raceimaztion 2012-01-27 06:18:14
你可以手動完成,[this](http://stackoverflow.com/questions/8982263/how-to-write-entire-logcat-in-to-sdcard/8982342#8982342)會有幫助。 – 2012-01-27 05:41:29