Saya mengamati bahwa ketika saya menggunakan Logcat dengan Eclipse dengan ADT untuk Android, saya mendapatkan pesan dari banyak aplikasi lain juga. Apakah ada cara untuk memfilter ini dan hanya menampilkan pesan dari aplikasi saya saja.
android
android-logcat
Vinod
sumber
sumber
Jawaban:
Nama paket dijamin unik sehingga Anda dapat menggunakan
Log
fungsi dengan tag sebagai nama paket Anda dan kemudian memfilter menurut nama paket :CATATAN: Pada Build Tools 21.0.3 ini tidak akan berfungsi lagi karena TAGS dibatasi hingga 23 karakter atau kurang.
Log.<log level>("<your package name>", "message");
adb -d logcat <your package name>:<log level> *:S
-d
menunjukkan perangkat yang sebenarnya dan-e
menunjukkan sebuah emulator. Jika ada lebih dari 1 emulator yang berjalan, Anda dapat menggunakan-s emulator-<emulator number>
(mis.,-s emulator-5558
)Contoh:
adb -d logcat com.example.example:I *:S
Atau jika Anda menggunakan
System.out.print
untuk mengirim pesan ke log Anda dapat menggunakanadb -d logcat System.out:I *:S
untuk hanya menampilkan panggilan ke System.out.Anda dapat menemukan semua level log dan info lebih lanjut di sini: https://developer.android.com/studio/command-line/logcat.html
http://developer.android.com/reference/android/util/Log.html
EDIT: Sepertinya saya sedikit melompati pistol dan baru menyadari bahwa Anda bertanya tentang logcat di Eclipse. Apa yang saya posting di atas adalah untuk menggunakan logcat melalui adb dari baris perintah. Saya tidak yakin apakah filter yang sama mentransfer ke Eclipse.
sumber
logcat <your package name>:<log level>
jawaban, disarankan untuk menggunakan nama paket sebagai filter yang valid. Saya perlu membaca jawaban dua kali untuk memahami apa yang sebenarnya dikatakannya, oleh karena itu saya sarankan untuk hanya mengubah baris pertama menjadi sesuatu seperti "dilogcat <tag>:<log level>
mana<tag>
bisa menjadi nama paket Anda jika Anda juga menggunakan tagandroid.util.Log
"Linux dan OS X
Gunakan ps / grep / cut untuk mengambil PID, lalu grep untuk entri logcat dengan PID itu. Inilah perintah yang saya gunakan:
(Anda dapat meningkatkan regex lebih lanjut untuk menghindari masalah teoretis dari baris log yang tidak terkait yang berisi nomor yang sama, tetapi itu tidak pernah menjadi masalah bagi saya)
Ini juga berfungsi saat mencocokkan beberapa proses.
Windows
Pada Windows Anda dapat melakukan:
sumber
pid=$(adb shell ps | grep "package-name" | cut -c10-15) && adb logcat | grep $pid
adb logcat | grep `adb shell ps | grep org.videolan.vlc | awk '{print $2")"}'`
adb logcat | findstr com.example.package
adb logcat | grep `adb shell ps | grep com.example.package | tr -s [:space:] ' ' | cut -d' ' -f2`
Sejak Android 7.0, logcat memiliki opsi filter --pid, dan perintah pidof tersedia, ganti com.example.app dengan nama paket Anda.
(terminal ubuntu / Sejak Android 7.0)
atau
Untuk info lebih lanjut tentang perintah pidof:
https://stackoverflow.com/a/15622698/7651532
sumber
grep
danfindstr
, tetapi mereka hanya menyaring log dengan beberapa nilai tidak termasuk banyak pesan. Jawaban Anda adalah yang asli, tampilkan semua log tentang aplikasi tanpa mengecualikan pesan log dari perpustakaan lain. Ini seperti filter 'Tampilkan hanya yang dipilih' Android Studio saat ini. Terima kasih!Tambahkan filter
Tentukan nama
Pilih filter Anda.
sumber
Bagi saya ini bekerja di mac
Terminal
Sampai di folder di mana Anda
adb
kemudian ketik perintah di bawah ini di terminalDi sini ia akan memfilter semua log dari
MyTAG
danAndroidRuntime
sumber
Log.d("MyTAG", "i am hero"); Log.d("AndroidRunTime", "i am zero");
2) ke DEBUG login ke Android$ adb -s RKSCWSOV5SAIEUSC shell;
3)$ logcat MyTAG:V AndroidRuntime:E *:S
4) sekarang akan menunjukkan verbose MyTAG dan kesalahan AndroidRuntimePerbarui 17 Mei
Sudah beberapa tahun, dan banyak hal telah berubah. Dan Eclipse tidak lagi didukung secara resmi. Jadi, inilah dua pendekatan terbaru:
1. Android Studio
Di
Android monitor
kotak alat, Anda bisa memfilter logcat perdebuggable process
. Biasanya, ketika Anda mengembangkan aplikasi itu adalah proses debuggable. Sesekali saya mengalami masalah dengan ini, dan lakukan yang berikut:Tools
->Android
->Enable ADB Integration
.Jika sudah diaktifkan, matikan, lalu hidupkan kembali
Cabut dan pasang kembali perangkat seluler Anda.
Ada juga opsi untuk memfilter melalui regex dan level debug
2. warna logcat
Ini adalah pembungkus python yang bagus di atas
adb logcat
jika Anda ingin menggunakan solusi berbasis terminal. Hal baiknya adalah Anda dapat menyimpan banyak konfigurasi dan menggunakannya kembali. Penyaringan berdasarkantags
cukup dapat diandalkan. Anda juga dapat memfilter berdasarkanpackage
untuk melihat log satu atau beberapa aplikasi saja, tetapi Anda mulailogcat-color
tepat sebelum meluncurkan aplikasi Anda.Jawaban lama:
Tampaknya saya tidak dapat mengomentari jawaban sebelumnya, jadi saya akan memposting yang baru. Ini adalah komentar untuk jawaban Tom Mulcahy , yang menunjukkan bagaimana perintah harus berubah sehingga berfungsi pada sebagian besar perangkat, karena
adb shell ps
kolom PID adalah variabel.CATATAN: Perintah di bawah ini berfungsi untuk kasus di mana Anda telah menghubungkan banyak perangkat. Sangat
device id
dibutuhkan. Kalau tidak, Anda bisa menghilangkan tanda kurung '[', ']'1. Untuk mengetahui kolom pid, ketik:
Sekarang hafal nomor kolom untuk PID. Penomoran dimulai dari
1
.2. Kemudian ketikkan yang berikut ini:
Cukup letakkan kolom yang Anda hafal
PUT_COLUMN_HERE
, misalnya$5
Peringatan
Setiap kali Anda menjalankan kembali aplikasi Anda, Anda harus menjalankan kembali perintah ke-2, karena aplikasi tersebut mendapatkan PID baru dari OS.
sumber
Ini telah bekerja untuk saya di git bash:
sumber
letakkan ini di applog.sh
kemudian:
applog.sh com.example.my.package
sumber
log.d("TAG", "multine\nlog")
contohnya):adb -d logcat -v long | sed -Ene '/^\[.*'" (${APPID}):"'.*\]/ { N; s/\n/ /; p; :a;' -e 'n; p; s/^.+$/foo/; t a;' -e ' }' | grep -v '^$'
- Saya mengabaikannyatr
, saya berasumsi itu diperlukan pada sistem Windows, dan saya membungkusAPPID
tanda kurung untuk memungkinkan petak mulitple (dipisahkan oleh|
) .Ini berfungsi untuk saya dengan USB debugging:
Hubungkan perangkat dan gunakan:
adb shell
Gunakan logcat saat terhubung:
logcat | grep com.yourapp.packagename
sumber
Jika Anda menggunakan Android Studio, Anda dapat memilih proses dari mana Anda ingin menerima logcats. Ini screenshotnya.
sumber
Log cat has a new option (on by default) which creates an application filter automatically such that only the launched application's output is shown
Saya menulis skrip shell untuk menyaring logcat berdasarkan nama paket, yang menurut saya lebih dapat diandalkan daripada menggunakan
Ia menggunakan / proc / $ pid / cmdline untuk mencari tahu pid yang sebenarnya, kemudian melakukan grep pada logcat
https://gist.github.com/kevinxucs/7340e1b1dd2239a2b04a
sumber
Ubuntu: adb logcat -b all -v color --pid = `adb shell pidof -s com.packagename` Dengan warna dan log aplikasi yang berkelanjutan
sumber
adb shell pidof ...
bit tidak bekerja untuk saya jadi sayaadb shell
ed ke dalam perangkat dan berlaritop
menyalin PID untuk aplikasi saya di sana dan kemudian menggantinya di perintah Andapgrep
alih-alih pidofADT v15 untuk Eclipse memungkinkan Anda menentukan nama aplikasi (yang sebenarnya merupakan nilai paket di androidmanifest.xml Anda).
Saya suka bisa memfilter berdasarkan aplikasi, tetapi logcat baru memiliki bug dengan autoscroll. Ketika Anda sedikit gulir ke atas untuk melihat log sebelumnya, secara otomatis gulir kembali ke bawah dalam beberapa detik. Tampaknya menggulung 1/2 jalan ke atas log tidak membuatnya melompat kembali ke bawah, tapi itu sering tidak berguna.
EDIT: Saya mencoba menentukan filter aplikasi dari baris perintah - tetapi tidak berhasil. Jika seseorang mengetahui hal ini ATAU cara menghentikan autoscroll, harap beri tahu saya.
sumber
Menggunakan Windows command prompt:
adb logcat -d | findstr <package>
.* Ini pertama kali disebutkan oleh jj_ , tapi butuh waktu lama untuk menemukannya di komentar ...
sumber
Sebagai varian, Anda dapat menggunakan skrip PID Cat pihak ketiga oleh Jake Wharton. Script ini memiliki dua keunggulan utama:
Dari dokumentasi:
Outputnya seperti
sumber
Saya tidak yakin ada cara untuk hanya melihat pesan sistem mengenai aplikasi Anda, tetapi Anda dapat memfilter berdasarkan string. Jika Anda membuat log di dalam program, Anda bisa memasukkan kata kunci unik tertentu, dan memfilter berdasarkan kata itu.
sumber
Coba: Jendela -> Preferensi -> Android -> LogCat. Ganti bidang "Tampilkan tampilan logcat jika ..." nilai "VERBOSE". Itu membantu saya.
sumber
Jika Anda menggunakan Eclipse , tekan tanda + hijau di jendela logCat di bawah ini dan masukkan nama paket Anda (com.example.yourappname) di kotak by Application Name . Juga, pilih nama yang nyaman bagi Anda di kotak Nama Filter dan klik ok. Anda hanya akan melihat pesan yang terkait dengan aplikasi Anda ketika filter yang baru Anda tambahkan dipilih dari panel kiri di logCat.
sumber
Beri nama log Anda. Saya menyebut milik saya "wawa".
Di Android Studio, buka Android-> Edit Konfigurasi Filter
Kemudian ketikkan nama yang Anda berikan log. Dalam kasus saya, ini disebut "wawa". Berikut ini beberapa contoh jenis filter yang dapat Anda lakukan. Anda bisa memfilter menurut System.out, System.err, Log, atau nama paket:
sumber
Ini mungkin solusi paling sederhana.
Di atas solusi dari Tom Mulcahy, Anda dapat lebih menyederhanakannya seperti di bawah ini:
Penggunaannya semudah alias biasa. Cukup ketik perintah di shell Anda:
Pengaturan alias membuatnya mudah. Dan regex membuatnya kuat untuk aplikasi multi-proses, dengan asumsi Anda hanya peduli pada proses utama.
Tentu saja Anda dapat mengatur lebih banyak alias untuk setiap proses sesuka Anda. Atau gunakan solusi hegazy. :)
Selain itu, jika Anda ingin mengatur level logging, itu
sumber
Di Windows 10, menggunakan Ionic, yang paling berhasil bagi saya adalah menggabungkan 'findstr' dengan "INFO: CONSOLE" yang dihasilkan oleh semua pesan App. Jadi, perintah saya di baris perintah adalah:
sumber
Saya mencoba menggunakan jawaban Tom Mulcahy tetapi sayangnya itu tidak berfungsi untuk aplikasi dengan banyak proses jadi saya mengeditnya agar sesuai dengan kebutuhan saya.
sumber
Gunakan
-s
!Sumber
sumber
Selain jawaban Tom Mulcahy , jika Anda ingin memfilter dengan PID di konsol Windows, Anda dapat membuat file batch kecil seperti itu:
sumber
Ini jelas pertanyaan yang ditujukan untuk penggunaan Logcat dari luar perangkat pengembang, namun jika Anda ingin menampilkan output Logcat pada perangkat (secara terprogram), Anda hanya memerlukan ini:
The
*:D
pada akhirnya menyaring setiap pesan di bawah level log Debug tetapi Anda dapat mengabaikannya.Untuk mengarahkan output ke, katakanlah, TextView, lihat misalnya di sini .
sumber
Sekarang dimungkinkan untuk mengetik tag: nameofthetag atau aplikasi: nameoftheapp untuk memfilter tanpa menambahkan filter baru ke bilah filter yang tersimpan
sumber
Di intelliJ (dan mungkin juga di gerhana), Anda dapat memfilter keluaran logcat dengan tampilan teks web , sehingga pada dasarnya mencetak semua yang dihasilkan phonegap
sumber
Varian lain dari Gavriel
applog.sh
dengan dukungan beberapa perangkat dan aplikasi dengan berbagai proses:Pemakaian:
applog.sh com.example.my.package [-s <specific device>]
sumber
Di linux, ini bekerja untuk saya:
sumber