Android adb logcat का उपयोग करके TAG नाम से कुछ संदेशों को कैसे हटाया जाए?


122

Logcat लॉग को फ़िल्टर करने की अनुमति देता है लेकिन यह इस तरह काम करता है: आप फ़िल्टर को परिभाषित करते हैं और logcat केवल उन संदेशों को प्रदर्शित करता है जो फ़िल्टर से मेल खाते हैं। लेकिन क्या फिल्टर द्वारा परिभाषित कुछ TAGs को सभी लॉगों को प्रदर्शित करने का एक तरीका है?


जवाबों:


51

यदि आप उपयोग कर रहे हैं तो आप adb logcatइसे grep के माध्यम से पाइप कर सकते हैं और इसका उलटा मिलान कर सकते हैं: grep manpage से :

v, - इनवर्ट-मैच गैर-मिलान लाइनों का चयन करने के लिए, मिलान की भावना को उल्टा करें।

उदाहरण के लिए:

$adb logcat | grep --invert-match 'notshownmatchpattern' 

आप नियमित एक्सप्रेशन का उपयोग करके इसे बढ़ा सकते हैं ।

यहाँ इस तरह की अभिव्यक्ति का एक उदाहरण है:

"/^(?:emails|tags|addresses)"

यह कोई भी होने के लिए जाँच करेगा, grep तब उन्हें सूचीबद्ध नहीं करेगा।


1
@ ज़ेस्ट grepएक मानक यूनिक्स कमांड है। खिड़कियों के लिए आप कोशिश कर सकते हैं find /V "notshownmatchpattern"। PS जाहिर है, adb खोल भी एक है grep। लेकिन यह मानक यूनिक्स के समान नहीं है grep!
पीसीओडर

हाँ, मुझे यह पहले से ही मिला, पहले से ही पाया गया है - चूसना, पावरशेल या grep स्थापित करना संभव है (विंडोज़ के लिए :), लिनक्स जैसा ही रीडमी में लिखा गया था, लेकिन व्यवहार में इतना अधिक नहीं है)
Gennadiy Ryabkin

कोई विज्ञापन नहीं, मैं सिर्फ git कमांडलाइन टूल के साथ git इंस्टॉल करने के लिए विंडोज़ के लिए एडिक्ट होगा। यह विंडो के लिए सभी मूल यूनिक्स कमांडलाइन टूल स्थापित करेगा।
क्रिस पॉलर

या खिड़की पर आम यूनिक्स कमांडलाइन टूल्स के लिए क्लिंक स्थापित करें
क्रिस पॉल

@PC क्या आप विंडोज़ सीएमडी के साथ ऐसा करने के लिए पूरी कमांड लिख सकते हैं?
राघव सत्यदेव

217

आप इसे डीडीएमएस मॉनिटर (और एक्लिप्स या एंड्रॉइड स्टूडियो) से रेग्युलर एक्सप्रेशन इनपुट बॉक्स और नेगेटिव लुक-फॉरवर्ड दावे के साथ भी कर सकते हैं , उदाहरण के लिए मैं निम्नलिखित के साथ अपने लॉग से बहुत अधिक शोर को बाहर कर रहा हूं:

tag:^(?!(WifiMulticast|WifiHW|MtpService|PushClient))

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

एंड्रॉइड स्टूडियो के लॉगकट मॉनिटर मॉनिटर फलक में, आप ऊपरी दाएं में ड्रॉपडाउन को खोलकर इसके लिए एक सहेजा गया फ़िल्टर सेट कर सकते हैं (इसमें "केवल चयनित एप्लिकेशन दिखाएं" हो सकता है) और एडिट फ़िल्टर कॉन्फ़िगरेशन का चयन करें। एक नया लॉगकैट फ़िल्टर बनाएं और डालें ^(?!(WifiMulticast... आदि। ))लॉग टैग बॉक्स में, Regexचेकबॉक्स की जाँच के साथ।


ग्रहण लॉगकैट के लिए अच्छा समाधान
सेराफिम का

6
मेरी दृष्टि तुरंत कम धुंधली है! : D
suomi35

यह वही है जो मैं काफी समय से देख रहा हूँ
ar-g

आकर्षण की तरह काम किया! बहुत धन्यवाद। इसमें "दलविकम्" शब्द भी जोड़ें। यह logcat में सबसे अधिक कष्टप्रद है।
अतुल

1
Logcat फ़िल्टरिंग के साथ उत्तर उचित है - stackoverflow.com/a/17468665/828237
kwesolowski

74

यदि आप एंड्रॉइड स्टूडियो में टैग नाम से कुछ संदेशों को बाहर करना या फ़िल्टर करना चाहते हैं, तो LogCat विंडो => फ़िल्टर कॉन्फ़िगरेशन संपादित करें, और "लॉग टैग (regex) द्वारा" के तहत निम्नलिखित दर्ज करें: "

^(?!(tag1|tag2|tag3|tag4))

ध्यान दें कि कोई रिक्त स्थान नहीं हैं, यह महत्वपूर्ण है


यह उत्तर intellij 15 के logcat में काम करता है> फ़िल्टर कॉन्फ़िगरेशन संपादित करें जो "नया लॉगसीक फ़िल्टर बनाएँ" शीर्षक वाला एक मोडल लाता है।
पेट

1
धन्यवाद। Btw लेनोवो फोन में बहुत सारे स्पैम लॉग संदेश हैं
सीगल

हालांकि यह केवल उस टैग के साथ लॉग को लॉग में दिए जाने से रोकता है। मॉनिटर अभी भी बैकग्राउंड में उन कॉल्स के साथ स्वाइप हो जाता है और यह नॉन "tag1 | tag2 | etc" को बफर से बाहर कर देता है। क्या इसके आसपास कोई रास्ता है?
TheBestBigAl

Logcat फ़िल्टरिंग के साथ उत्तर उचित है - stackoverflow.com/a/17468665/828237
kwesolowski

या अगर एक टैग^(?!tag1)
व्लाद

34

^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$

यह WindowManager, dalvik, ...

tag:^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$

यह लॉगऑन से WindowManager, dalvik, ... टैग को बाहर कर देगा


कुछ और:^(?!(WifiMulticast|WifiHW|MtpService|PushClient|EGL_emulation|OpenGl*|InputReader|art|dalvik|Environment|DataRouter|AlarmManager|WindowManager|PhoneStatusBar|ActivityManager|ResourceType|PackageManager|gralloc*))
गुरुपाद ममदापुर

और अधिक: (Gnss | NetRec | ResolverController | GAv4 | AsyncOperation। AppOps | WificondControl | aofp | wifi | netmgr | ctxmgr। BestClock। BroadcastQueue | ConnextivityService | wakelock | HttpClientWrapper | Rawr | टेनर | BgTask | WifiService | BluetoothAdapter | UpdateStatsService | AppIdleHistory | कनेक्टिविटी | VelvetNetworkClient | WorkerManager | EGL_emulation | बातूनी | gralloc | InputReader | ActivityThread | ActivityTaskManager | UsageStatsService | ocess.gservice | DropBoxManagerService | EventLogChimeraService | PContextMetricsRunner))
ग्रीम

32

शेल से, आप एक कमांड का उपयोग कर सकते हैं जैसे:

adb logcat AlarmManagerService:S PowerManagerService:S *:V

जिसमें टैग AlarmManagerServiceऔर PowerManagerServiceटैग के अलावा सभी लॉग शामिल होंगे ।

( :S"मूक" के लिए खड़ा है, जिसका अर्थ है कि उन टैगों के लिए कुछ भी मुद्रित नहीं किया जाएगा; :V"वर्बोज़" के लिए खड़ा है, जिसका अर्थ है कि सब कुछ अन्य सभी टैगों के लिए मुद्रित किया जाएगा। लॉगकोट के लिए एंड्रॉइड प्रलेखन में अन्य विकल्पों का अधिक विवरण है, जिनका आप उपयोग कर सकते हैं। फ़िल्टर।)

आप ANDROID_LOG_TAGSडिफ़ॉल्ट फ़िल्टर सेट करने के लिए पर्यावरण चर का उपयोग भी कर सकते हैं , जैसे (बैश में):

export ANDROID_LOG_TAGS="AlarmManagerService:S PowerManagerService:S *:V"

यह एक अच्छा सुझाव है और कमांड लाइन से बिना पाइपलाइन के काम करता है। आपको अपने उत्तर को यह बताने के लिए अपडेट करना चाहिए कि ": S" भाग केवल नामांकित घटकों के लिए गंभीर संदेशों का उत्सर्जन करने वाला है (जो शायद ही कभी हुआ हो)। फिर, अच्छा जवाब। लोगों को यह वोट देना चाहिए ...
क्रिस मार्क

1
@ChrisMarkle डॉक्स के अनुसार S'मौन' के लिए है। जैसा कि आप सुझाव देते हैं, मैंने इसे समझाने के लिए उत्तर को अपडेट कर दिया है।
रिच

2
आप पर्यावरण चर ANDROID_LOG_TAGS का उपयोग करके उसी तरह लॉगकैट आउटपुट को फ़िल्टर कर सकते हैं। मुझे यह उपयोगी लगता है कि यह हमेशा अधिक स्पैमम प्रक्रियाओं में से कुछ को बाहर करने के लिए सेट होता है।
एमिडरेंडर

16

अधिक शक्तिशाली फ़िल्टरिंग के लिए सकारात्मक और नकारात्मक दोनों रूपांतरों को मिलाएं।

उदाहरण:

(?=(AndroidRuntime|Main|RandomTag))(?!(Audio))

पहले नेस्टेड कोष्ठकों में टैग शामिल हैं।

दूसरे में टैग को बाहर रखा गया है।


IMHO, यह लॉग को फ़िल्टर करने का अधिक व्यापक तरीका है।
रितेश ग्यून

4

यहां उन फिल्टर की सूची दी गई है, जिनका उपयोग मैं सैमसंग सिस्टम लॉग को नजरअंदाज करने के लिए कर रहा हूं । अन्य उपकरणों के साथ भी काम करेगा।

Logcat -> फ़िल्टर कॉन्फ़िगरेशन संपादित करें -> लॉग टैग

^(?!(PowerUI|PowerPlanningReceiver|BatteryService|SamsungPhoneWindowManager|MotionRecognitionService|AudioService|APM_AudioPolicyManager|SensorService|StorageManager|SignalClusterView|BatteryService|TelephonyManager|UsbDeviceManager|KeyguardUpdateMonitor|BatteryController|ActivityManager|LauncherAppsService|AppsModel|DataLoader|PackageManager|LauncherApps|ContactsImsCommon|ImsUtil|ImsSettingsProvider|DeviceConfigManager|WifiService|BackupManagerService|PersonaManagerService|DefaultDialerManager|ResourceType|NetworkUIGlobals|NetworkProxy|FileWriteThread|ReflectUtil|PhoneApp|SamsungAlarmManager|display|DeviceStorageMonitorService|wrapperGPS|io_stats|GnssLocationProvider|KeyguardServiceBoxContainer|ConnectivityService|SSRM|TLC_TIMA_PKM_initialize|mc_tlc_communication|TeeDriverClient|TLC_TIMA_PKM_measure_kernel|AutomaticBrightnessController|BatteryUtils|WifiConnectivityManager|Launcher|IconView|ApplicationPackageManager|LiveIconLoader|WifiScanningService|WifiHAL|WifiScanController|ApplicationPolicy|SELinux|TimaKeyStoreProvider|ActivityThread|zygote|GservicesProvider|GoogleHttpClient|cr_ChildProcessConnect|WificondControl|Netd|Tethering|ContactsImsCommon|ImsConstants|tnet-jni|BatteryStatsService|SignalClusterView|LiveIconManager|BitmapCacheContainer|com.samsung.android.app.powerplanning.utils.BatteryUtils|ReflectField|cr_ChildConnAllocator|TinLoadingFailTracker|WifiPermissionsUtil|EventHandler_FLP|android.hardware.wifi@1.0-service|BluetoothAdapter|bt_btm|WifiPermissionsUtil|GeofencerStateMachine|Places|GCoreUlr|BeaconBle|Sensors|SLocation|ContactsProvider_EventLog|WificondScannerImpl|AlarmManager|AlarmManagerEXT|MultiDex|NetworkSecurityConfig|DnsProxyListener|dalvik-internals|mobileconfig|SsacManager|ImsPhoneStateManager|VolteServiceModule|PdnController|PowerManagerService|GameManagerService|NoSync|SensorManager|DisplayPowerController|NetworkController|SamsungAnalytics111040|tlcFidoAuthnr|InputReader|FlashlightController|KeyguardWallpaperController|OpenGLRenderer|EasyMuteController|Vibrator|VibratorService|PowerManagerUtil|LightsService|WindowManager|InputDispatcher|InputReader|CustomFrequencyManagerService|SystemUIAnalytics|SamsungAnalytics|swipe|PanelView|BadgeCache|MARsPolicyManager|MARsDBManager|KeyguardClockPage|ScanManager|RegiMgrBase|secImsManager|GeolocationController|MultiSimUtils|CarrierText|Mms|NetworkNotificationUI2|CommandListener|ReschedulableTimer|RCS-ContactsImsCommon|Settings|DmConfigModule|NotificationMgr2|PhoneMultiSimUtils|PhoneProxy|VideoCapabilities|AudioCapabilities|SAIV_FACE|FaceController|FaceService|SamsungAnimationCreator|ImageWallpaper|Finsky|VirtualScreen|PagedView|DragLayer|HomeContainer|ImsServiceStub|DmConfigHelper|TZ))

1

ऐसा करने का एक आसान तरीका केवल उन टैग्स को फ़िल्टर करना है जिन्हें आप देखना चाहते हैं।

adb logcat -s "Tag1" -s "Tag2" -s "Tag3"

केवल उन टैगों को लाएगा।


0

ग्रहण लॉगकैट दृश्य के भीतर ऐसा कोई विकल्प नहीं है। हालाँकि आप किसी भी संदेश को लॉग करने के लिए लॉग स्तर का उपयोग कर सकते हैं जिसका लॉग स्तर बहुत कम है। ई। जी। इसे I (nfo) पर सेट करना D (ebug) और (V) एरोब संदेश प्रदर्शित नहीं करता है।


वैसे मैं यह उल्लेख करना भूल गया कि मैं लॉग्स पढ़ने के लिए कमांड प्रॉम्प्ट पर / फोन के अंदर उपयोग कर रहा हूं। और हर बार जब मैं स्क्रीन पर टैप करता हूं तो यह InputReader / InputDispatcher संदेशों को दिखाता है जो स्क्रीन को भर रहे हैं। अब मैं "InputReader: S InputDispatcher: S" वर्क पर फिल्टर सेट करना भी देखता हूं :) उत्तर के लिए धन्यवाद!
कोस्टास
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.