Filter keluaran dalam logcat dengan tagname

151

Saya mencoba untuk memfilter keluaran logcat dari perangkat nyata (bukan emulator) dengan nama tag tetapi saya mendapatkan semua pesan yang merupakan spam. Saya hanya ingin membaca pesan dari peramban yang seharusnya berupa "peramban: " atau "webkit: ", tetapi tidak berfungsi ... Ini dia yang saya dapat:

hasil aktual

mengunyah
sumber

Jawaban:

294

Gunakan ini:

adb logcat -s "TAGNAME"
duduk
sumber
7
Terima kasih! Di atas sama dengan adb logcat *: s 'tagname'
munch
3
Bagaimana saya bisa memfilter <tagname> OUT?
Arunabh Das
Saya percaya satu-satunya cara untuk menyaring adalah berdasarkan level. Misalnya, jika beberapa aplikasi mengirim spam ke Debug, maka atur tingkat logcat untuk hanya menampilkan Info dan tingkat yang lebih tinggi: logcat *: I
Someone Somewhere
1
Apakah mungkin menggunakan di atas dengan nama file -f? Katakan, skenario saya adalah memfilter log dengan TagName dan membuangnya ke file teks.
Green goblin
9
Das - "adb logcat TAGNAME: s" akan memberi tag berisik.
Don Park
56

Jika seseorang menemukan ini seperti yang saya lakukan, Anda dapat memfilter pada beberapa tag dengan menambahkan koma di antaranya, seperti:

adb logcat -s "browser","webkit"
aarislarsen
sumber
Jelaskan di mana saya harus meletakkan kode ini. Saya lebah baru. Tolong Jelaskan
Zar E Ahmer
1
@Nepster Ketik yang ada di terminal.
async
Jika Anda menggunakan cygwin di windows, Anda dapat menggunakan grep ... dan ya, ini berfungsi.
sgupta
12

Opsi lain adalah mengatur level log untuk tag tertentu:

adb logcat SensorService: S PowerManagerService: S NfcService: S power: I Sensor: E

Jika Anda hanya ingin mengatur level log untuk beberapa tag, Anda dapat melakukannya berdasarkan tag per tag.

mkobit
sumber
9

Jangan bergantung pada shell ADB, cukup perlakukan itu (adb logcat) keluaran linux normal lalu pip:

$ adb shell logcat | grep YouTag
# just like: 
$ ps -ef | grep your_proc 
Siwei Shen 申思维
sumber
5
Ini adalah pilihan yang buruk karena banyak lalu lintas yang tidak perlu dikirim, dan filter jelas tidak akan berfungsi. Jika proses log yang tidak terkait, pesan yang kebetulan memiliki beberapa string di dalamnya akan muncul.
John Smith
and the filter obviously won't workSudahkah kamu mencoba? Saya sudah, dan menempelkan jawaban saya sesuai dengan hasilnya.
Siwei Shen 申思维
1
Pertanyaannya adalah untuk windows, di mana grep tidak tersedia
sroskelley
1
Jika Anda menggunakan cygwin di windows, Anda dapat menggunakan grep ... dan ya, ini berfungsi.
sgupta
6

Inilah cara saya membuat tag:

private static final String TAG = SomeActivity.class.getSimpleName();
 Log.d(TAG, "some description");

Anda bisa menggunakan getCannonicalName

Di sini saya memiliki filter TAG berikut:

  • any (*) View - VERBOSE
  • setiap (*) Aktivitas - VERBOSE
  • tag apa saja yang dimulai dengan Xyz (*) - ERROR
  • System.out - SILENT (karena saya menggunakan Log in kode saya sendiri)

Di sini apa yang saya ketik di terminal:

$  adb logcat *View:V *Activity:V Xyz*:E System.out:S
pengguna3566154
sumber