Android में केवल मेरे आवेदन से संदेश प्राप्त करने के लिए LogCat फ़िल्टर करें?


341

मैंने देखा कि जब मैं एंड्रॉइड के लिए ADT के साथ एक्लिप्स के साथ Logcat का उपयोग करता हूं, तो मुझे कई अन्य अनुप्रयोगों से भी संदेश मिलते हैं। क्या इसे फ़िल्टर करने और केवल मेरे स्वयं के एप्लिकेशन से केवल संदेश दिखाने का कोई तरीका है।


1
सभी उत्तरों का सुझाव है कि एप्लिकेशन से संदेशों के लिए फ़िल्टरिंग डिबग की जा रही है। यहां तक ​​कि इन फिल्टरों पर भी, अन्य एप्स से Logcat स्पैम जल्द ही लॉग बफर को भर देता है, चाहे वह कितना भी बड़ा क्यों न हो। क्या इन संदेशों को एकत्र न करने या उन्हें समय-समय पर हटाने के लिए ग्रहण को बताने का एक तरीका है?
मूल्य

जवाबों:


267

पैकेज के नाम अद्वितीय होने की गारंटी है, इसलिए आप फ़ंक्शन को अपने पैकेज के नाम के रूप में टैग के साथ उपयोगLog कर सकते हैं और फिर पैकेज नाम से फ़िल्टर कर सकते हैं :

नोट: बिल्ड टूल्स 21.0.3 के रूप में यह अब काम नहीं करेगा क्योंकि TAGS 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/logcot.html

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

संपादित करें: ऐसा लगता है कि मैंने बंदूक को थोड़ा सा हिलाया और महसूस किया कि आप ग्रहण में लॉगकट के बारे में पूछ रहे थे। मैंने जो ऊपर पोस्ट किया है वह कमांड लाइन से adb के माध्यम से logcat का उपयोग करने के लिए है। मुझे यकीन नहीं है कि एक ही फिल्टर ग्रहण में स्थानांतरित हो।


10
मुझे पता है कि प्रश्न ग्रहण के बारे में था, लेकिन मैं कमांड लाइन के साथ प्यार में हूं और हमेशा लॉगकैट के लिए भी इसका उपयोग करता हूं। आउटपुट को रंगने के लिए कुछ उपकरणों का भी उपयोग करें जैसे jsharkey.org/blog/2009/04/22/… इसे और भी उपयोगी बनाता है
फ्रांसिस्को

1
एमुलेटर पर परीक्षण: यह मेरे लिए अटक गया जब मैं adb -e logcat com.example.example निष्पादित करता हूं: I *: S, adb -d logcat System.out: I *: S काम कर रहा है।
CoDe

1
@ शुभा तुम्हारा क्या मतलब है यह अटक गया था? मैंने इसे लगभग एक साल पहले पोस्ट किया था तब से Logcat में कुछ बदल सकता है।
शानेट

58
यह विधि ऐप द्वारा नहीं, टैग द्वारा फ़िल्टर होती है। ऐप द्वारा टॉम की विधि फ़िल्टर
जोनास अल्वेस

17
logcat <your package name>:<log level>उत्तर का उपयोग करके यह पता चलता है कि मान्य नाम के रूप में पैकेज नाम का उपयोग करना संभव है। मुझे यह समझने के लिए कि यह वास्तव में क्या कह रहा है, को समझने के लिए दो बार उत्तर को पढ़ने की आवश्यकता है, इसलिए मैं बस पहली पंक्ति को कुछ इस तरह बदलने की सलाह देता हूं जैसे कि " आपका पैकेज नाम logcat <tag>:<log level>कहां <tag>हो सकता है यदि आपने टैग के रूप में उपयोग किया है android.util.Log"
फ्लो

368

लिनक्स और ओएस एक्स

PID को हथियाने के लिए ps / grep / cut का प्रयोग करें, फिर उस PID के साथ लॉगकैट प्रविष्टियों के लिए grep। यहाँ मैं उपयोग की आज्ञा है:

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

(आप असंबंधित लॉग लाइनों की सैद्धांतिक समस्या से बचने के लिए आगे रेगेक्स को बेहतर बना सकते हैं, लेकिन यह मेरे लिए कभी मुद्दा नहीं रहा है)

कई प्रक्रियाओं का मिलान करते समय यह भी काम करता है।

खिड़कियाँ

विंडोज पर आप कर सकते हैं:

adb logcat | findstr com.example.package

2
@ BTRNaidu: आप साइगविन को स्थापित कर सकते हैं या git-bash (विंडोज़ के लिए बैश) का उपयोग कर सकते हैं
Phillip

1
pid=$(adb shell ps | grep "package-name" | cut -c10-15) && adb logcat | grep $pid
विशालकाल

1
somtimes gc एक ही संख्या को उस प्रक्रिया की पिड संख्या के साथ प्रिंट करता है जब मुक्त मेमोरी होती है। यहाँ एक और संस्करण हैadb logcat | grep `adb shell ps | grep org.videolan.vlc | awk '{print $2")"}'`
एलिजैंड्रो

14
विंडोज पर आप कर सकते हैं:adb logcat | findstr com.example.package
jj_

8
बस आपके जवाब में मामूली बदलाव। मेरा सुझाव है:adb logcat | grep `adb shell ps | grep com.example.package | tr -s [:space:] ' ' | cut -d' ' -f2`
hiepnd

59

Android 7.0 के बाद से, logcat में - pid फ़िल्टर विकल्प है, और pidof कमांड उपलब्ध है, com.example.app को अपने पैकेज के नाम से बदलें।
(ubuntu टर्मिनल / 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विकल्पों की कोशिश की , लेकिन वे केवल कुछ संदेशों को छोड़कर कुछ मानों के साथ लॉग फ़िल्टर कर रहे हैं। आपका उत्तर वास्तविक है, किसी अन्य पुस्तकालयों से लॉग संदेश को बाहर किए बिना ऐप के बारे में सभी लॉग दिखाएं। यह एंड्रॉइड स्टूडियो करंट की तरह है 'केवल चयनित दिखाएँ' फ़िल्टर। धन्यवाद!
equiman

जब तक प्रक्रिया "com.example.app" चल रही है, तब तक ये 2 कमांड काम करते हैं। हालाँकि, त्रुटि संदेश दिखाई देगा यदि प्रक्रिया नहीं चल रही है। आश्चर्य से बचने के लिए बस एक साइड नोट।
जोनाथनझू

53

फ़िल्टर जोड़ें

फ़िल्टर जोड़ें

नाम निर्दिष्ट करें

यहां छवि विवरण दर्ज करें

अपना फ़िल्टर चुनें।

यहां छवि विवरण दर्ज करें


3
जब आप विकास उपकरण डिज़ाइन करते हैं, तो सटीक होना बहुत महत्वपूर्ण है, क्योंकि उपयोगकर्ता के सटीक होने की उम्मीद है। वह पैकेज नाम है, एप्लिकेशन नाम नहीं। > :(
हेनरिक एरलैंडसन

19

मेरे लिए यह मैक Terminal
गॉट में उस फ़ोल्डर में काम करता है जहाँ आपके पास adbतब टर्मिनल में कमांड के नीचे टाइप होता है

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

यहाँ यह सभी लॉग को फ़िल्टर करेगा MyTAGऔरAndroidRuntime


2
1) जावा कोड: Log.d("MyTAG", "i am hero"); Log.d("AndroidRunTime", "i am zero");2) Android के लिए DEBUG लॉगिन करने के लिए $ adb -s RKSCWSOV5SAIEUSC shell;2) $ logcat MyTAG:V AndroidRuntime:E *:S 4) अब यह MyTAG की क्रिया दिखाएगा और AndroidRuntime की त्रुटियों

1
यह एकमात्र उत्तर है जिसने मैकओएस पर मेरे लिए काम किया। अच्छा काम।
ओम-हा

1
@ om- हा धन्यवाद, मैंने स्टूडियो को लंबे समय पहले इस्तेमाल किया था और यह नहीं जानता था कि यह अभी भी मुद्दा है
इंद्र कुमार राठौर

1
वास्तव में मैं एंड्रॉइड स्टूडियो का उपयोग नहीं कर रहा हूं। मैं स्पंदन, एंड्रॉइड एसडीके और ग्रैडल का उपयोग कर रहा हूं। एक संपादक के रूप में, वी.एस. कोड। तो यह जानने का एक शानदार तरीका है कि मेरे एंड्रॉइड फोन में क्या चल रहा है
om-ha

13

अपडेट १ 17 मई

कुछ साल हो गए हैं, और बात बदल गई है। और ग्रहण अब आधिकारिक रूप से समर्थित नहीं है। इसलिए यहां दो और अप-टू-डेट दृष्टिकोण हैं:

1. एंड्रॉइड स्टूडियो

यहां छवि विवरण दर्ज करें में Android monitorटूलबॉक्स, आप logcat प्रति फ़िल्टर कर सकते हैं debuggable process। आम तौर पर, जब आप किसी एप्लिकेशन को विकसित करते हैं तो यह एक डिबगेबल प्रक्रिया होती है। हर बार एक समय में मैं इस के साथ समस्या कर रहा हूँ, और निम्न कार्य करें:

  1. Tools-> Android-> Enable ADB Integration
    यदि यह पहले से ही सक्षम था, तो इसे बंद करें, और फिर वापस चालू करें

  2. अपने मोबाइल डिवाइस को अनप्लग करें और रिप्लेस करें।

रेगेक्स और डीबग स्तर के माध्यम से फ़िल्टर करने के विकल्प भी हैं

2. लॉगकाट-रंग

adb logcatयदि आप टर्मिनल आधारित समाधान का उपयोग करना चाहते हैं तो यह शीर्ष पर एक अच्छा अजगर आवरण है । इसके बारे में अच्छी बात यह है कि आप कई कॉन्फ़िगरेशन को बचा सकते हैं और बस उन्हें पुन: उपयोग कर सकते हैं। द्वारा छानना tagsकाफी विश्वसनीय है। आप packageकेवल एक या अधिक ऐप्स के लॉग देखने के लिए फ़िल्टर कर सकते हैं , लेकिन आप logcat-colorअपना ऐप लॉन्च करने से ठीक पहले शुरू करते हैं।

पुराना उत्तर:

ऐसा लगता है कि मैं पिछले उत्तरों पर टिप्पणी नहीं कर सकता, इसलिए मैं एक नया पोस्ट करूंगा। यह टॉम मुल्काही के जवाब के लिए एक टिप्पणी है , यह दर्शाता है कि कमांड को कैसे बदलना चाहिए ताकि अधिकांश उपकरणों पर काम किया जा सकेadb shell ps पीआईडी ​​कॉलम चर है।

नोट: नीचे दिए गए आदेश उन मामलों के लिए काम करते हैं जहां आपने कई डिवाइस कनेक्ट किए हैं। तो 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

चेतावनी

हर बार जब आप अपने एप्लिकेशन को फिर से चलाते हैं, तो आपको दूसरी कमांड को फिर से चलाना होगा, क्योंकि एप्लिकेशन को ओएस से एक नया पीआईडी ​​मिलता है।


इन सभी चीजों को देखें जो आपको अपने ऐप के लिए नहीं बल्कि अन्य ऐप के लिए लॉग इन करने के लिए करना है। साथ ही, मुझे वास्तव में यह हास्यास्पद लगता है कि अन्य लोग अन्य लोगों के लॉग देख सकते हैं। क्या आप मुझे बता रहे हैं कि ऐसा कुछ नहीं है जिसके बारे में Google कर सकता है? बस सुनिश्चित करें कि मेरे लॉग अन्य लोगों द्वारा नहीं देखे गए हैं, और मेरे लॉगकट को साफ रखें?
TatiOverflow

10

यह मेरे लिए git bash में काम कर रहा है:

$ 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, मुझे लगता है कि यह विंडोज सिस्टम पर आवश्यक है, और मैंने APPIDकोष्ठक में लिपटे (अलग-अलग |) अनुमति देने के लिए कोष्ठक में लपेट दिया ।
लोगन पिकअप

9

यह मेरे लिए USB डीबगिंग के साथ काम करता है:

  1. डिवाइस कनेक्ट करें और उपयोग करें:

    adb shell

  2. कनेक्ट होने पर लॉगकट का उपयोग करें:

    logcat | grep com.yourapp.packagename


7

यदि आप एंड्रॉइड स्टूडियो का उपयोग कर रहे हैं, तो आप उस प्रक्रिया का चयन कर सकते हैं जिससे आप लॉगकोट प्राप्त करना चाहते हैं। यहाँ स्क्रीनशॉट है।

यहां छवि विवरण दर्ज करें


1
एंड्रॉइड स्टूडियो वर्जन के रूप में 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

मैंने पैकेज नाम से लॉगकैट को फ़िल्टर करने के लिए एक शेल स्क्रिप्ट लिखी, जो मुझे लगता है कि उपयोग करने से अधिक विश्वसनीय है

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

यह वास्तविक pid का पता लगाने के लिए / proc / $ pid / cmdline का उपयोग करता है, फिर logatat पर एक grep करें

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


7

उबंटू: adb logcat -b all -v color --pid = `adb शेल पिडोफ -s com.packagename` रंग और लगातार ऐप के लॉग के साथ


adb shell pidof ...बिट तो मैं मेरे लिए काम नहीं किया था adb shellडिवाइस में एड और भाग गया topमेरे अनुप्रयोग के लिए पीआईडी की नकल की और फिर अपना आदेश में बदल दिया
edzillion

pgrepपिडोफ के बजाय कोशिश करें
लेनोर्ड सिल्वा

यह मेरे लिए OSX पर काम करता है, -v रंग के लिए अतिरिक्त अंक
मंगल

6

ग्रहण के लिए ADT v15 आपको एक एप्लिकेशन नाम (जो वास्तव में आपके androidmanifest.xml में पैकेज मान है) निर्दिष्ट करें।

मुझे ऐप द्वारा फ़िल्टर करने में सक्षम होना पसंद है, लेकिन नए लॉगकैट में ऑटोस्कोप के साथ एक बग है। जब आप पिछले लॉग को देखने के लिए थोड़ा स्क्रॉल करते हैं, तो यह स्वचालित रूप से कुछ सेकंड में वापस नीचे स्क्रॉल करता है। ऐसा लगता है कि स्क्रॉलिंग 1/2 तरह से होती है, लॉग लॉग को नीचे कूदने से रोकता है, लेकिन यह अक्सर बेकार होता है।

संपादित करें: मैंने कमांड-लाइन से ऐप फिल्टर को निर्दिष्ट करने की कोशिश की - लेकिन भाग्य नहीं। यदि कोई व्यक्ति इसका पता लगाता है या ऑटोक्रेक को कैसे रोक सकता है, तो कृपया मुझे बताएं।


6

Windows कमांड प्रॉम्प्ट का उपयोग करना: adb logcat -d | findstr <package> :।

* यह पहली बार jj_ द्वारा उल्लिखित किया गया था , लेकिन मुझे इसे टिप्पणियों में खोजने में उम्र लगी ...


4

एक संस्करण के रूप में आप जेक व्हार्टन द्वारा थर्ड पार्टी स्क्रिप्ट पीआईडी ​​कैट का उपयोग कर सकते हैं । इस लिपि के दो प्रमुख लाभ हैं:

  • किसी विशिष्ट एप्लिकेशन पैकेज से प्रक्रियाओं के लिए लॉग प्रविष्टियाँ दिखाता है
  • रंग logcat

प्रलेखन से:

एप्लिकेशन डेवलपमेंट के दौरान आप अक्सर केवल अपने ऐप से आने वाले लॉग संदेशों को प्रदर्शित करना चाहते हैं। दुर्भाग्य से, क्योंकि प्रक्रिया आईडी हर बार जब आप फोन पर तैनाती करते हैं तो यह सही चीज के लिए जीआरईपी के लिए एक चुनौती बन जाती है।

यह स्क्रिप्ट अनुप्रयोग पैकेज द्वारा फ़िल्टर करके उस समस्या को हल करती है।

एक आउटपुट जैसा दिखता है यहां छवि विवरण दर्ज करें


2

मुझे यकीन नहीं है कि आपके ऐप के संबंध में केवल सिस्टम संदेश देखने का एक तरीका है, लेकिन आप एक स्ट्रिंग के आधार पर फ़िल्टर कर सकते हैं। यदि आप कार्यक्रम के भीतर एक लॉग कर रहे हैं, तो आप केवल एक निश्चित अद्वितीय कीवर्ड शामिल कर सकते हैं, और उस शब्द के आधार पर फ़िल्टर कर सकते हैं।


2

कोशिश करें: विंडो -> प्राथमिकताएं -> एंड्रॉइड -> लॉगकट। फ़ील्ड बदलें "लॉगकैट दृश्य दिखाएं यदि ..." मान "VERBOSE"। इसने मेरी मदद की।


2

यदि आप ग्रहण का उपयोग कर रहे हैं , तो नीचे लॉगऑन विंडो में हरे रंग का + चिह्न दबाएं और एप्लिकेशन नाम बॉक्स में अपना पैकेज नाम (com.example.yourappname) डालें । इसके अलावा, फ़िल्टर नाम बॉक्स में आपके लिए कोई भी नाम चुनें और ठीक पर क्लिक करें। आपको अपने आवेदन से संबंधित संदेश तभी दिखाई देंगे जब आपने अभी जो फ़िल्टर जोड़ा है वह लॉगकैट में बाएं फलक से चुना गया हो।


2

अपने लॉग को एक नाम दें। मुझे मेरा "वावा" कहा जाता है।

यहां छवि विवरण दर्ज करें

एंड्रॉइड स्टूडियो में, एंड्रॉइड पर जाएं-> फ़िल्टर कॉन्फ़िगरेशन संपादित करें

यहां छवि विवरण दर्ज करें

फिर उस नाम पर टाइप करें, जिसमें आपने लॉग दिए हैं। मेरे मामले में, इसे "वावा" कहा जाता है। यहां कुछ प्रकार के फ़िल्टर दिए गए हैं जो आप कर सकते हैं। आप System.out, System.err, Logs या पैकेज नामों से फ़िल्टर कर सकते हैं:

यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें


2

यह शायद सबसे सरल उपाय है।

टॉम मुल्काही से एक समाधान के शीर्ष पर, आप इसे नीचे की तरह सरल बना सकते हैं:

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

उपयोग सामान्य उपनाम के रूप में आसान है। अपने शेल में बस कमांड टाइप करें:

logcat

उपनाम सेटअप इसे आसान बनाता है। और रेगेक्स आपको केवल मुख्य प्रक्रिया के बारे में परवाह करते हुए, मल्टी-प्रोसेस ऐप्स के लिए मजबूत बनाता है।

कोज़ में से आप प्रत्येक प्रक्रिया के लिए अधिक उपनाम सेट कर सकते हैं जैसा कि आप कृपया। या हेगैज के घोल का उपयोग करें। :)

इसके अलावा, यदि आप लॉगिंग स्तर सेट करना चाहते हैं, तो यह है

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

2

विंडोज 10 पर, इओनिक का उपयोग करते हुए, जो मेरे लिए बहुत अच्छा काम करता था, सभी ऐप संदेशों द्वारा उत्पन्न "INFO: CONSOLE" के साथ 'फाइंडस्ट' को मिलाया गया था। तो, कमांड लाइन में मेरी कमांड है:

adb logcat | findstr INFO:CONSOLE

1

मैंने टॉम मुलकाही के उत्तर का उपयोग करने की कोशिश की, लेकिन दुर्भाग्य से यह कई प्रक्रियाओं वाले अनुप्रयोगों के लिए काम नहीं कर रहा था, इसलिए मैं अपनी आवश्यकताओं को पूरा करने के लिए इसे संपादित करता हूं।

#!/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
मान लें कि आप कोड नहीं लिख रहे हैं। आप पुस्तकालयों के संदेशों की परवाह कर सकते हैं, और आप लॉग स्ट्रिंग को बदल नहीं सकते हैं।
जेम्स मूर

1

के अलावा टॉम मल्केही के जवाब है, यदि आप 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अंत में डीबग लॉग स्तर से नीचे जाने वाले प्रत्येक संदेश को फ़िल्टर कर देता है, लेकिन आपको लगता है कि बाहर छोड़ सकते हैं।

आउटपुट को निर्देशित करने के लिए, एक TextView, उदाहरण के लिए यहाँ देखें


0

अब टैग टाइप करना संभव है: nameofthetag या app: nameoftheapp to फ़िल्टर बिना नए फ़िल्टर को सहेजे हुए फ़िल्टर बार में जोड़ना


0

IntelliJ में (और शायद ग्रहण में भी) आप टेक्स्ट वेबव्यू द्वारा लॉगकैट आउटपुट को फ़िल्टर कर सकते हैं , इसलिए यह मूल रूप से सब कुछ प्रिंट करता है जो फोनगैप का उत्पादन कर रहा है


0

फिर भी 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>]


-1

लिनक्स में, इसने मेरे लिए काम किया:

adb logcat | grep `adb shell ps | grep your.package | awk '{print $2}'`
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.