Saya ingin membaca dan bereaksi terhadap log logcat dalam aplikasi saya.
Saya menemukan kode berikut:
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) {}
Kode ini memang mengembalikan log logcat yang dibuat hingga aplikasi dimulai -
Tetapi apakah mungkin untuk terus mendengarkan log logcat yang baru?
android
logcat
android-logcat
David
sumber
sumber
Jawaban:
Anda dapat terus membaca log, hanya dengan menghapus tanda "-d" pada kode Anda di atas.
Bendera "-d" memerintahkan logcat untuk menampilkan konten log dan keluar. Jika Anda menghapus bendera, logcat tidak akan menghentikan dan terus mengirimkan baris baru yang ditambahkan ke dalamnya.
Perlu diingat bahwa ini dapat memblokir aplikasi Anda jika tidak dirancang dengan benar.
semoga berhasil.
sumber
Anda dapat menghapus logcat Anda dengan metode ini yang saya gunakan untuk menghapus setelah menulis logcat ke file untuk menghindari baris duplikat:
sumber
Dengan coroutine dan pustaka lifecycle-Liveata-ktx dan lifecycle-viewmodel-ktx yang resmi :
Pemakaian
sumber
WebView
bukanTextView
.Berikut ini adalah penyatuan / drop-in cepat yang dapat digunakan untuk menangkap semua item log saat ini, atau semua baru (sejak permintaan terakhir).
Anda harus mengubah / memperluas ini, karena Anda mungkin ingin mengembalikan aliran berkelanjutan daripada LogCapture.
"Manual" Android LogCat: https://developer.android.com/studio/command-line/logcat.html
Dalam proyek Anda yang melakukan pencatatan aktivitas:
Ketika Anda ingin menangkap semua yang Anda masuki "Logger"
Saat Anda lapar dan ingin mengemil lebih banyak batang kayu
Anda bisa mendapatkan tangkapan sebagai string
Atau Anda bisa mendapatkan item log penangkapan dengan
Tidak ada metode statis yang tepat untuk menangkap kunci log asing tetapi ada caranya
Menggunakan cara di atas juga akan memungkinkan Anda untuk memanggil
Logger.this.nextCapture
penangkap asing.sumber
git.hsusa.core.log.controller.AndroidLogController.java
; Anda mungkin ingin menggunakan pustaka hscore saya daripada solusi "cepat & kotor" ini. Untuk melakukan logging dengan hscore Anda akan menggunakan:public final static SmartLogContext log = SmartLog.getContextFor("MyLogContext");
untuk memulai. Cara kerjanya hampir sama dengan API yang lebih baik. Anda dapat menggunakan pelacak masalah git hub saya jika Anda memerlukan bantuan APA PUN dengan itu.Bendera "-c" membersihkan buffer.
-c Menghapus (membersihkan) seluruh log dan keluar.
sumber
Saya menggunakan ini di aplikasi saya dan berhasil. Dan Anda dapat menggunakan kode di atas dalam Tugas Timer sehingga tidak akan menghentikan utas utama Anda
sumber