กรอง LogCat เพื่อรับเฉพาะข้อความจาก My Application ใน Android หรือไม่


341

ฉันสังเกตว่าเมื่อฉันใช้ Logcat กับ Eclipse กับ ADT สำหรับ Android ฉันได้รับข้อความจากแอปพลิเคชันอื่น ๆ เช่นกัน มีวิธีกรองหรือไม่และแสดงเฉพาะข้อความจากแอปพลิเคชันของฉันเท่านั้น


1
คำตอบทั้งหมดแนะนำให้กรองข้อความจากแอปที่กำลังดีบั๊ก แม้ว่าตัวกรองเหล่านี้จะเปิดใช้งานอยู่ แต่สแปม Logcat จากแอปอื่น ๆ ก็จะเติมบัฟเฟอร์การบันทึกในไม่ช้าไม่ว่าจะมีขนาดเท่าใดก็ตาม มีวิธีที่จะบอกให้ Eclipse ไม่รวบรวมข้อความเหล่านี้เลยหรือจะลบทิ้งเป็นระยะ?
ราคา

คำตอบ:


267

ชื่อแพคเกจรับประกันว่าจะไม่ซ้ำกันเพื่อให้คุณสามารถใช้Logฟังก์ชั่นที่มีแท็กเป็นชื่อแพคเกจของคุณแล้วกรองตามชื่อแพคเกจ :

หมายเหตุ: ในฐานะที่เป็นเครื่องมือสร้าง 21.0.3 สิ่งนี้จะไม่ทำงานเนื่องจากแท็กถูก จำกัด ไว้ที่ 23 ตัวอักษรหรือน้อยกว่า

Log.<log level>("<your package name>", "message");

adb -d logcat <your package name>:<log level> *:S

-dหมายถึงอุปกรณ์จริงและ-eหมายถึงโปรแกรมจำลอง หากมีโปรแกรมจำลองการทำงานมากกว่า 1 ตัวคุณสามารถใช้-s emulator-<emulator number>(เช่น-s emulator-5558)

ตัวอย่าง: adb -d logcat com.example.example:I *:S

หรือถ้าคุณใช้System.out.printเพื่อส่งข้อความไปยังบันทึกคุณสามารถใช้adb -d logcat System.out:I *:Sเพื่อแสดงเฉพาะการโทรไปที่ System.out

คุณสามารถค้นหาระดับการบันทึกและข้อมูลเพิ่มเติมได้ที่นี่: https://developer.android.com/studio/command-line/logcat.html

http://developer.android.com/reference/android/util/Log.html

แก้ไข: ดูเหมือนว่าฉันกระโดดปืนเล็กน้อยและเพิ่งรู้ว่าคุณกำลังถามเกี่ยวกับ logcat ใน Eclipse สิ่งที่ฉันโพสต์ข้างต้นสำหรับการใช้ logcat ผ่าน adb จากบรรทัดคำสั่ง ฉันไม่แน่ใจว่าตัวกรองเดียวกันนี้ถ่ายโอนไปยัง Eclipse หรือไม่


10
ฉันรู้ว่าคำถามเกี่ยวกับ eclipse แต่ฉันรักกับ command line และมักจะใช้มันสำหรับ logcat เช่นกัน นอกจากนี้ยังใช้เครื่องมือบางอย่างในการระบายสีเอาท์พุทอย่างjsharkey.org/blog/2009/04/22/…ทำให้มันมีประโยชน์มากขึ้น
Francisco Jordano

1
การทดสอบเกี่ยวกับโปรแกรมจำลอง: มันติดอยู่กับฉันเมื่อฉันรัน adb -e logcat com.example.example: I *: S, adb -d logcat System.out: I *: S ทำงาน
CoDe

1
@Shubh คุณหมายถึงอะไรมันติดอยู่? ฉันโพสต์สิ่งนี้เป็นเวลาเกือบหนึ่งปีแล้วดังนั้นบางสิ่งใน Logcat อาจเปลี่ยนไปตั้งแต่นั้นมา
shanet

58
วิธีนี้กรองตามแท็กไม่ใช่โดยแอป วิธีการของ Tom กรองโดยแอป
Jonas Alves

17
โดยใช้logcat <your package name>:<log level>คำตอบแนะนำว่าเป็นไปได้ที่จะใช้ชื่อแพคเกจเป็นตัวกรองที่ถูกต้อง ฉันจำเป็นต้องอ่านคำตอบสองครั้งเพื่อทำความเข้าใจกับสิ่งที่มันกำลังพูดดังนั้นฉันขอแนะนำให้เปลี่ยนบรรทัดแรกเป็นบางสิ่งเช่น " logcat <tag>:<log level>ซึ่ง<tag>อาจเป็นชื่อแพ็คเกจของคุณหากคุณใช้เป็นแท็กในandroid.util.Log"
Flow

368

Linux และ OS X

ใช้ ps / grep / cut เพื่อจับ PID จากนั้น grep สำหรับรายการ logcat ด้วย PID นั้น นี่คือคำสั่งที่ฉันใช้:

adb logcat | grep -F "`adb shell ps | grep com.asanayoga.asanarebel  | tr -s [:space:] ' ' | cut -d' ' -f2`"

(คุณสามารถปรับปรุง regex เพิ่มเติมเพื่อหลีกเลี่ยงปัญหาเชิงทฤษฎีของบันทึกการใช้งานที่ไม่เกี่ยวข้องซึ่งมีหมายเลขเดียวกัน แต่มันไม่เคยเป็นปัญหาสำหรับฉันเลย)

สิ่งนี้ยังใช้งานได้เมื่อจับคู่หลายกระบวนการ

ของ windows

บน Windows คุณสามารถทำได้:

adb logcat | findstr com.example.package

2
@BTRNaidu: คุณสามารถติดตั้ง Cygwin หรือใช้ git-bash (bash สำหรับ windows)
Phillip

1
pid=$(adb shell ps | grep "package-name" | cut -c10-15) && adb logcat | grep $pid
VishalKale

1
somtimes gc พิมพ์หมายเลขเดียวกันด้วยหมายเลข pid ของโปรเซสเมื่อหน่วยความจำว่าง นี่เป็นอีกเวอร์ชั่นหนึ่งadb logcat | grep `adb shell ps | grep org.videolan.vlc | awk '{print $2")"}'`
alijandro

14
ใน Windows คุณสามารถทำได้:adb logcat | findstr com.example.package
jj_

8
แค่เปลี่ยนคำตอบของคุณเล็กน้อย ฉันอยากจะแนะนำ:adb logcat | grep `adb shell ps | grep com.example.package | tr -s [:space:] ' ' | cut -d' ' -f2`
สวัสดี

59

ตั้งแต่ Android 7.0, logcat มีตัวเลือก --pid filter และคำสั่ง pidof พร้อมใช้งานให้แทนที่ com.example.app เป็นชื่อแพ็คเกจของคุณ
(ubuntu terminal / ตั้งแต่ Android 7.0)

adb logcat --pid=`adb shell pidof -s com.example.app`

หรือ

adb logcat --pid=$(adb shell pidof -s com.example.app)

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง pidof:
https://stackoverflow.com/a/15622698/7651532


2
ฉันพยายามทั้งหมดgrepและfindstrตัวเลือก แต่พวกเขาเป็นเพียงการกรองบันทึกที่มีค่าบางอย่างไม่รวมข้อความจำนวนมาก คำตอบของคุณคือของจริงแสดงบันทึกทั้งหมดเกี่ยวกับแอปโดยไม่รวมข้อความบันทึกจากไลบรารีอื่น มันเหมือนตัวกรอง 'แสดงเฉพาะที่เลือก' ปัจจุบันของ Android Studio ขอบคุณ!
equiman

คำสั่ง 2 เหล่านี้ทำงานตราบเท่าที่กระบวนการ "com.example.app" กำลังทำงาน อย่างไรก็ตามข้อความแสดงข้อผิดพลาดจะปรากฏขึ้นหากกระบวนการไม่ทำงาน เพียงบันทึกด้านข้างเพื่อหลีกเลี่ยงความประหลาดใจ
jonathanzh

53

เพิ่มตัวกรอง

เพิ่มตัวกรอง

ระบุชื่อ

ป้อนคำอธิบายรูปภาพที่นี่

เลือกตัวกรองของคุณ

ป้อนคำอธิบายรูปภาพที่นี่


3
มันค่อนข้างสำคัญที่จะต้องแม่นยำเมื่อคุณออกแบบเครื่องมือในการพัฒนาเนื่องจากคาดว่าผู้ใช้จะแม่นยำ นี่คือชื่อแพ็กเกจไม่ใช่ชื่อแอปพลิเคชัน > :(
Henrik Erlandsson

19

สำหรับฉันมันใช้งานได้ใน mac Terminal
ไปที่โฟลเดอร์ที่คุณมีadbแล้วพิมพ์คำสั่งด้านล่างใน terminal

./adb logcat MyTAG:V AndroidRuntime:E *:S

ที่นี่มันจะกรองบันทึกทั้งหมดของMyTAGและAndroidRuntime


2
1) รหัส Java: Log.d("MyTAG", "i am hero"); Log.d("AndroidRunTime", "i am zero");2) ไปที่ DEBUG เข้าสู่ระบบ Android $ adb -s RKSCWSOV5SAIEUSC shell;3) $ logcat MyTAG:V AndroidRuntime:E *:S 4) ตอนนี้มันจะแสดง verbose ของ MyTAG และข้อผิดพลาดของ AndroidRuntime

1
นี่เป็นคำตอบเดียวที่ทำงานกับฉันใน MacOS เยี่ยมมาก
om-ha

1
@ om-ha ขอบคุณฉันใช้สตูดิโอมานานแล้วและไม่รู้ว่ามันยังมีปัญหาอยู่
Inder Kumar Rathore

1
อันที่จริงฉันไม่ได้ใช้ Android Studio ฉันใช้ Flutter, Android SDK และ Gradle ในฐานะบรรณาธิการ, VS Code ดังนั้นนี่เป็นวิธีที่ยอดเยี่ยมในการรู้ว่าเกิดอะไรขึ้นในโทรศัพท์ Android ของฉัน
om-ha

13

อัปเดต 17 พฤษภาคม

ไม่กี่ปีที่ผ่านมาและสิ่งต่าง ๆ ก็เปลี่ยนไป และ Eclipse ไม่ได้รับการสนับสนุนอย่างเป็นทางการอีกต่อไป ดังนั้นนี่เป็นอีกสองวิธีที่เป็นปัจจุบันมากขึ้น:

1. Android Studio

ป้อนคำอธิบายรูปภาพที่นี่ ในAndroid monitorกล่องเครื่องมือคุณสามารถกรอง logcat debuggable processต่อ โดยปกติเมื่อคุณพัฒนาแอปพลิเคชันมันเป็นกระบวนการที่สามารถดีบักได้ ทุกครั้งที่ฉันมีปัญหากับสิ่งนี้และทำสิ่งต่อไปนี้:

  1. Tools-> ->Android หากเปิดใช้งานอยู่แล้วให้ปิดและเปิดใหม่Enable ADB Integration

  2. ถอดและเสียบอุปกรณ์มือถือของคุณ

นอกจากนี้ยังมีตัวเลือกในการกรองผ่าน regex และระดับการดีบัก

2. logcat-color

นี่คือเสื้อคลุมงูหลามที่ดีadb logcatถ้าคุณต้องการใช้เทอร์มินัลโซลูชั่น สิ่งที่ดีเกี่ยวกับมันคือคุณสามารถบันทึกการกำหนดค่าหลาย ๆ และเพียงแค่นำมาใช้ใหม่ การกรองด้วยtagsความน่าเชื่อถือ คุณสามารถกรองตามpackageเพื่อดูบันทึกของแอปหนึ่งแอปขึ้นไปเท่านั้น แต่คุณจะเริ่มต้นlogcat-colorทันทีก่อนที่จะเปิดแอพของคุณ

คำตอบเก่า:

ดูเหมือนว่าฉันไม่สามารถแสดงความคิดเห็นกับคำตอบก่อนหน้าดังนั้นฉันจะโพสต์ใหม่ นี่เป็นข้อคิดเห็นของคำตอบของTom Mulcahyซึ่งแสดงให้เห็นว่าคำสั่งควรเปลี่ยนแปลงอย่างไรเพื่อให้ทำงานบนอุปกรณ์ส่วนใหญ่เนื่องจากadb shell psคอลัมน์ PID เป็นตัวแปร

หมายเหตุ:คำสั่งด้านล่างใช้สำหรับกรณีที่คุณเชื่อมต่อกับอุปกรณ์จำนวนมาก ดังนั้นdevice idเป็นสิ่งจำเป็น มิฉะนั้นคุณสามารถละเว้นเครื่องหมาย '[', ']'

1. หากต้องการค้นหาคอลัมน์ของ pid ให้พิมพ์:

adb [-s DEVICE_ID] shell ps | head -n 1

ตอนนี้จำหมายเลขคอลัมน์สำหรับ PID 1นับเริ่มต้นจาก

2. จากนั้นพิมพ์ดังต่อไปนี้:

adb [-s DEVICE_ID] logcat | grep $(adb [-s DEVICE_ID] shell ps \
| grep "com.example" | awk -F" " ' {print $PUT_COLUMN_HERE}')

เพียงใส่คอลัมน์ที่คุณจดจำPUT_COLUMN_HEREเช่น$5

ข้อแม้

ทุกครั้งที่คุณเรียกใช้แอปพลิเคชันของคุณใหม่คุณจะต้องเรียกใช้คำสั่งที่ 2 อีกครั้งเนื่องจากแอปพลิเคชันได้รับ PID ใหม่จากระบบปฏิบัติการ


ดูสิ่งเหล่านี้ทั้งหมดที่คุณต้องทำเพื่อรับบันทึกแอพของคุณไม่ใช่แอพอื่น นอกจากนี้ฉันพบว่ามันไร้สาระจริงๆที่คนอื่นสามารถเห็นบันทึกของคนอื่น คุณบอกฉันหรือไม่ว่า Google ไม่สามารถทำอะไรได้บ้าง? เพียงให้แน่ใจว่าคนอื่นไม่เห็นบันทึกของฉันและรักษา logcat ของฉันให้สะอาดอยู่ใช่ไหม
TatiOverflow

10

สิ่งนี้ได้ผลสำหรับฉันในการทุบตี git:

$ pid=$(adb shell ps | grep <package name> | cut -c11-15) ; adb logcat | grep $pid

9

นำไปใช้กับ applog.sh

#!/bin/sh
PACKAGE=$1
APPPID=`adb -d shell ps | grep "${PACKAGE}" | cut -c10-15 | sed -e 's/ //g'`
adb -d logcat -v long \
 | tr -d '\r' | sed -e '/^\[.*\]/ {N; s/\n/ /}' | grep -v '^$' \
 | grep " ${APPPID}:"

แล้ว: applog.sh com.example.my.package


นี่เป็นรูปแบบของตัวกรองเพื่อจับภาพบันทึกหลาย (ถ้าคุณได้ทำlog.d("TAG", "multine\nlog")ตัวอย่าง): adb -d logcat -v long | sed -Ene '/^\[.*'" (${APPID}):"'.*\]/ { N; s/\n/ /; p; :a;' -e 'n; p; s/^.+$/foo/; t a;' -e ' }' | grep -v '^$'- ฉันซ้ายออกtrผมสมมติว่ามันจำเป็นบนระบบ Windows และฉันห่อAPPIDในวงเล็บที่จะอนุญาตให้ PIDs mulitple (คั่นด้วย|) .
Logan Pickup

9

สิ่งนี้ใช้ได้กับฉันด้วยการแก้ไขข้อบกพร่อง USB:

  1. เชื่อมต่ออุปกรณ์และใช้:

    adb shell

  2. ใช้ logcat เมื่อเชื่อมต่อ:

    logcat | grep com.yourapp.packagename


7

หากคุณใช้Android Studioคุณสามารถเลือกกระบวนการที่คุณต้องการรับ logcats นี่คือภาพหน้าจอ

ป้อนคำอธิบายรูปภาพที่นี่


1
เช่นเดียวกับ android studio เวอร์ชั่น 0.4.5 คุณจะได้รับข้อความจากแอพที่ใช้งานได้เท่านั้น 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
dmSherazi

7

ฉันเขียนเชลล์สคริปต์สำหรับการกรอง logcat โดยชื่อแพ็คเกจซึ่งฉันคิดว่าน่าเชื่อถือกว่าการใช้

ps | grep com.example.package | cut -c10-15

มันใช้ / proc / $ pid / cmdline เพื่อหา pid จริงจากนั้นทำการ grep บน logcat

https://gist.github.com/kevinxucs/7340e1b1dd2239a2b04a


7

Ubuntu: adb logcat -b all -v color --pid = `adb shell pidof -s com.packagename`ด้วยสีและบันทึกของแอปอย่างต่อเนื่อง


adb shell pidof ...บิตไม่ทำงานสำหรับฉันดังนั้นฉันadb shelled ลงในอุปกรณ์และวิ่งtopคัดลอก PID สำหรับ app ของฉันมีแล้วแทนที่มันในคำสั่งของคุณ
edzillion

ลองpgrepแทน pidof
Lennoard Silva

สิ่งนี้ใช้ได้กับฉันใน OSX คะแนนพิเศษสำหรับสี -v
ดาวอังคาร

6

ADT v15 สำหรับ Eclipse ให้คุณระบุชื่อแอปพลิเคชัน (ซึ่งจริงๆแล้วเป็นค่าแพคเกจใน androidmanifest.xml ของคุณ)

ฉันชอบความสามารถในการกรองโดยแอป แต่ logcat ใหม่มีข้อผิดพลาดกับ autoscroll เมื่อคุณเลื่อนขึ้นเล็กน้อยเพื่อดูบันทึกก่อนหน้ามันจะเลื่อนกลับไปที่ด้านล่างโดยอัตโนมัติในไม่กี่วินาที ดูเหมือนว่าการเลื่อนไปทาง 1/2 บันทึกจะทำให้ไม่สามารถกระโดดกลับไปที่ด้านล่าง แต่มักจะไร้ประโยชน์

แก้ไข: ฉันพยายามระบุตัวกรองแอปจากบรรทัดคำสั่ง - แต่ไม่มีโชค หากมีคนคิดวิธีนี้หรือวิธีหยุดการเลื่อนอัตโนมัติโปรดแจ้งให้เราทราบ


6

การใช้คำสั่งของ Windows adb logcat -d | findstr <package>พรอมต์:

* นี่เป็นครั้งแรกที่jj_พูดถึงแต่ฉันใช้เวลานานกว่าจะหามันเจอในความคิดเห็น ...


4

เป็นตัวแปรคุณสามารถใช้PID Catของบุคคลที่สามโดย Jake Wharton สคริปต์นี้มีข้อดีสองประการที่สำคัญ:

  • แสดงรายการบันทึกสำหรับกระบวนการจากชุดแอปพลิเคชันเฉพาะ
  • สี logcat

จากเอกสาร:

ในระหว่างการพัฒนาแอปพลิเคชันคุณมักต้องการแสดงเฉพาะข้อความบันทึกที่มาจากแอปของคุณ น่าเสียดายเนื่องจาก ID กระบวนการเปลี่ยนแปลงทุกครั้งที่คุณปรับใช้กับโทรศัพท์มันกลายเป็นความท้าทายในการ grep สำหรับสิ่งที่ถูกต้อง

สคริปต์นี้แก้ปัญหานั้นได้ด้วยการกรองตามแพ็คเกจแอปพลิเคชัน

ผลลัพธ์ดูเหมือนว่า ป้อนคำอธิบายรูปภาพที่นี่


2

ฉันไม่แน่ใจว่าจะมีวิธีดูเฉพาะข้อความระบบที่เกี่ยวกับแอปของคุณ แต่คุณสามารถกรองตามสตริงได้ หากคุณทำบันทึกในโปรแกรมคุณสามารถรวมคำหลักที่ไม่ซ้ำกันและกรองตามคำนั้น


2

ลอง: หน้าต่าง -> การตั้งค่า -> Android -> LogCat เปลี่ยนฟิลด์ "แสดงมุมมอง logcat หาก ... " ค่า "VERBOSE" มันช่วยฉัน


2

หากคุณกำลังใช้Eclipseกดเครื่องหมาย + สีเขียวในlogcatหน้าต่างด้านล่างและใส่ชื่อแพคเกจของคุณ (com.example.yourappname) ในโดยการประยุกต์ใช้ชื่อกล่อง นอกจากนี้เลือกชื่อที่สะดวกสบายสำหรับคุณในกล่องชื่อตัวกรองแล้วคลิกตกลง คุณจะเห็นเฉพาะข้อความที่เกี่ยวข้องกับแอปพลิเคชันของคุณเมื่อเลือกตัวกรองที่คุณเพิ่งเพิ่มจากบานหน้าต่างด้านซ้ายใน logCat


2

ตั้งชื่อบันทึกของคุณ ฉันเรียกฉันว่า "wawa"

ป้อนคำอธิบายรูปภาพที่นี่

ใน Android Studio ให้ไปที่ Android-> แก้ไขการกำหนดค่าตัวกรอง

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นพิมพ์ชื่อที่คุณให้บันทึก ในกรณีของฉันมันเรียกว่า "wawa" นี่คือตัวอย่างของประเภทตัวกรองที่คุณสามารถทำได้ คุณสามารถกรองตามชื่อ System.out, System.err, Logs หรือ Package:

ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่


2

นี่อาจเป็นทางออกที่ง่ายที่สุด

ด้านบนของโซลูชันจาก Tom Mulcahy คุณสามารถทำให้มันง่ายขึ้นเช่นด้านล่าง:

alias logcat="adb logcat | grep `adb shell ps | egrep '\bcom.your.package.name\b' | cut -c10-15`"

การใช้งานเป็นเรื่องง่ายเหมือนนามแฝงปกติ เพียงพิมพ์คำสั่งในเชลล์ของคุณ:

logcat

การตั้งค่านามแฝงทำให้มีประโยชน์ และ regex ทำให้มันแข็งแกร่งสำหรับแอพแบบหลายกระบวนการโดยสมมติว่าคุณสนใจกระบวนการหลักเท่านั้น

เพราะคุณสามารถตั้งชื่อแทนเพิ่มเติมสำหรับแต่ละกระบวนการตามที่คุณต้องการ หรือใช้วิธีแก้ปัญหาของ hegazy :)

นอกจากนี้หากคุณต้องการตั้งค่าระดับการบันทึกข้อมูลก็คือ

alias logcat-w="adb logcat *:W | grep `adb shell ps | egrep '\bcom.your.package.name\b' | cut -c10-15`"

2

ใน Windows 10 การใช้ Ionic สิ่งที่ได้ผลดีกับฉันคือการรวม 'findstr' เข้ากับ "INFO: CONSOLE" ที่สร้างโดยข้อความของแอพทั้งหมด ดังนั้นคำสั่งของฉันในบรรทัดคำสั่งคือ:

adb logcat | findstr INFO:CONSOLE

1

ฉันพยายามใช้คำตอบของ Tom Mulcahy แต่น่าเสียดายที่มันไม่ทำงานกับแอพพลิเคชั่นที่มีหลายโพรเซสดังนั้นฉันจึงแก้ไขให้เหมาะกับความต้องการของฉัน

#!/bin/bash
if [ "$#" -ne 1 ]; then echo "Illegal number of parameters"; exit 1; fi
echo "Lof for package name: $1"
PROCESSES=`adb shell ps | grep "$1" | cut -c10-15`
NUM_OF_PROCESSES=`echo "$PROCESSES" | wc -l`
if [ $NUM_OF_PROCESSES -eq 0 ]; then echo "The application is not running!"; exit 1; fi
COUNTER=1
for process in $PROCESSES; do
        if [ $COUNTER -eq 1 ]; then GREP_TEXT="("; fi
        GREP_TEXT+=$process
        if [ $COUNTER -eq $NUM_OF_PROCESSES ]; then GREP_TEXT+=")"; else GREP_TEXT+="|"; fi
        let COUNTER=COUNTER+1 
        if [ $COUNTER -gt $NUM_OF_PROCESSES ]; then break; fi  
done
adb logcat | grep -E "$GREP_TEXT"

1

ใช้-s!

คุณควรใช้แท็กของคุณเองดูที่: http://developer.android.com/reference/android/util/Log.html

ชอบ.

Log.d("AlexeysActivity","what you want to log");

และเมื่อคุณต้องการอ่านบันทึกการใช้>

adb logcat -s AlexeysActivity

ที่กรองทุกอย่างที่ไม่ได้ใช้แท็กเดียวกัน

แหล่ง


1
อย่าคิดว่าคุณกำลังเขียนรหัส คุณอาจสนใจเกี่ยวกับข้อความจากไลบรารีและคุณไม่สามารถเปลี่ยนสตริงบันทึกได้
James Moore

1

นอกจากคำตอบของTom Mulcahyหากคุณต้องการกรองโดย PID บนคอนโซลของ Windows คุณสามารถสร้างไฟล์แบตช์ขนาดเล็กเช่นนั้น:

@ECHO OFF

:: find the process id of our app (2nd token)
FOR /F "tokens=1-2" %%A IN ('adb shell ps ^| findstr com.example.my.package') DO SET PID=%%B

:: run logcat and filter the output by PID
adb logcat | findstr %PID%

1

นี่เป็นคำถามที่เห็นได้ชัดว่ามีจุดประสงค์ที่จะใช้ Logcat จากด้านนอกของอุปกรณ์นักพัฒนาอย่างไรก็ตามถ้าคุณต้องการแสดงผลลัพธ์ Logcat บนอุปกรณ์ (โดยทางโปรแกรม) คุณเพียงแค่ต้องการสิ่งนี้:

Runtime.getRuntime().exec("logcat " + android.os.Process.myPid() + " *:D");

*:Dที่สิ้นสุดกรองข้อความด้านล่างระดับการบันทึกทุก Debug แต่คุณสามารถปล่อยให้เห็นว่า

เพื่อนำออกไปพูด TextView ให้ดูตัวอย่างที่นี่


0

ตอนนี้สามารถพิมพ์แท็ก: nameofthetag หรือ app: nameoftheapp เพื่อกรองโดยไม่ต้องเพิ่มตัวกรองใหม่ในแถบตัวกรองที่บันทึกไว้


0

ใน intelliJ (และอาจอยู่ใน eclipse ด้วย) คุณสามารถกรองผลลัพธ์ logcat ด้วยwebviewแบบข้อความดังนั้นมันจึงพิมพ์โดยทั่วไปทุกอย่างที่ phonegap กำลังผลิต


0

เป็นอีกหนึ่งตัวแปรของ Gavriel ที่applog.shรองรับอุปกรณ์และแอพพลิเคชั่นหลายตัวที่มีกระบวนการหลายขั้นตอน:

#!/bin/sh
PKG=$1
shift

APPIDS=`adb $@ shell ps | awk -v PKG="$PKG" '
    (NR == 1){appcolumn=2; for (i=1; i<=NF; i++) if ($i=="PID") {appcolumn=i}}
    index($0,PKG){print $(appcolumn)}' | paste -d \| -s`

echo "PID's: $APPIDS"
adb $@ logcat -v color | awk  "(\$3 ~ /$APPIDS/){print \$0}"

การใช้งาน: applog.sh com.example.my.package [-s <specific device>]


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.