Logcat — यह क्या है, लॉगिंग स्तर और लॉग के साथ काम करना

लेखक: IT Sectr प्रकाशित: 2026-05-06 पढ़ने का समय: 8 मिनट

Logcat एक Android SDK टूल है जो रीयल टाइम में सिस्टम संदेशों और एप्लिकेशन लॉग को देखने के लिए है, जो ADB या Android Studio के बिल्ट-इन कंसोल के माध्यम से उपलब्ध है। Android Developers के अनुसार, Logcat सिस्टम के सभी प्रक्रियाओं से संदेश एकत्र करता है, उन्हें महत्व स्तरों और टैग द्वारा फ़िल्टर करता है, और डेवलपर को त्रुटियों का निदान करने, कोड निष्पादन को ट्रैक करने और प्रदर्शन का विश्लेषण करने की अनुमति देता है। Logcat Android एप्लिकेशन को डीबग करते समय जानकारी का प्राथमिक स्रोत है।

मुख्य बातें

  • Logcat — Android Studio में कंसोल विंडो जो Android सिस्टम लॉग को रीयल टाइम में देखने के लिए है
  • लॉग स्तर — VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT — संदेश के महत्व और फ़िल्टरिंग थ्रेशोल्ड को निर्धारित करते हैं
  • फ़िल्टरिंग टैग, स्तरों और कीवर्ड द्वारा किसी विशिष्ट एप्लिकेशन के लॉग को सामान्य स्ट्रीम से अलग करने की अनुमति देती है
  • ADB logcat — बिना Android Studio के, USB या Wi-Fi के माध्यम से लॉग तक पहुँचने के लिए टर्मिनल कमांड
  • क्रैश लॉग — स्टैक ट्रेस के साथ अपवाद स्वचालित रूप से Logcat में आते हैं और पूर्ण क्रैश डायग्नोस्टिक्स रखते हैं

Android में Logcat क्या है

Logcat एक Android सिस्टम बफ़र है जिसमें सभी प्रक्रियाएँ (Linux कर्नेल, system_server और एप्लिकेशन सहित) एक विशिष्ट प्रारूप में संदेश लिखती हैं। logcat टूल, जो Android SDK में शामिल है, इस बफ़र को पढ़ता है और रीयल टाइम में संदेश प्रदर्शित करता है। Android 4.1 (API 16) से शुरू होकर, Logcat तक पहुँच प्रतिबंधित है: एप्लिकेशन केवल अपने स्वयं के लॉग पढ़ सकते हैं, और सिस्टम लॉग डीबग एक्सेस के साथ ADB के माध्यम से सुलभ हैं।

प्रत्येक Logcat संदेश में पाँच फ़ील्ड होते हैं: दिनांक और समय, PID (प्रक्रिया पहचानकर्ता), TID (थ्रेड पहचानकर्ता), लॉग स्तर और टैग। प्रारूप स्थिर है और सभी Android संस्करणों में समान है। यह IDE पर निर्भरता के बिना CI/CD पाइपलाइनों में लॉग फ़िल्टरिंग के लिए grep, awk और sed उपयोगिताओं का उपयोग करने की अनुमति देता है।

लॉग एक निश्चित आकार के रिंग बफ़र में संग्रहीत होते हैं: main के लिए 256 KB, system के लिए 256 KB और events के लिए 256 KB (Android 5+)। बफ़र के ओवरफ़्लो होने पर पुराने संदेश हटा दिए जाते हैं। डेवलपर PROP logcat.size प्रॉपर्टी या डिवाइस के डेवलपर विकल्पों में बफ़र का आकार बदल सकता है।

लॉग स्तर और टैग: Logcat संदेश की संरचना

छह स्तर लॉगिंग के संदेश के महत्व को निर्धारित करते हैं। Android अन्य प्लेटफ़ॉर्म के समान मानक स्तरों का उपयोग करता है लेकिन Log वर्ग में अपने स्वयं के स्थिरांक नामों के साथ। सही स्तर चुनना कुशलतापूर्वक लॉग फ़िल्टर करने और महत्वपूर्ण संदेशों को गौण संदेशों में डूबने से बचाने में मदद करता है।

स्तरस्थिरांकउद्देश्यडिफ़ॉल्ट रूप से दिखाया गया
VERBOSELog.vअत्यधिक विस्तृत डीबग जानकारीनहीं
DEBUGLog.dडेवलपर के लिए डीबग संदेशनहीं
INFOLog.iएप्लिकेशन संचालन के बारे में सूचनात्मक संदेशहाँ
WARNLog.wसंभावित समस्याओं के बारे में चेतावनीहाँ
ERRORLog.eगंभीर त्रुटियाँ और अपवादहाँ
ASSERTLog.wtfत्रुटियाँ जो सिद्धांत रूप में नहीं होनी चाहिएहाँ

टैग: मॉड्यूल द्वारा संदेशों का संगठन

टैग (tag) — 23 वर्णों तक की एक स्ट्रिंग जो संदेश के स्रोत की पहचान करती है। टैग के रूप में क्लास या मॉड्यूल नाम का उपयोग करने की अनुशंसा की जाती है: MainActivity, AuthManager, NetworkModule। यह एप्लिकेशन के किसी विशिष्ट घटक द्वारा लॉग फ़िल्टर करने की अनुमति देता है। टीम में एकरूपता के लिए, आप एक अलग फ़ाइल में टैग स्थिरांक बना सकते हैं या Timber लाइब्रेरी का उपयोग कर सकते हैं, जो क्लास नाम के आधार पर स्वचालित रूप से टैग सम्मिलित करती है।

क्रैश लॉग और अपवाद स्टैक ट्रेस

जब एक अनहैंडल्ड अपवाद होता है, Android स्वचालित रूप से Logcat में क्लास, विधि, कोड लाइन और कॉल श्रृंखला को इंगित करते हुए पूर्ण स्टैक ट्रेस लिखता है। क्रैश लॉग में अपवाद प्रकार (NullPointerException, RuntimeException), संदेश और क्रैश बिंदु से एप्लिकेशन के एंट्री पॉइंट तक कॉल अनुक्रम होता है। उपयोगकर्ताओं के उपकरणों से क्रैश लॉग का विश्लेषण करने के लिए Firebase Crashlytics का उपयोग किया जाता है, जो ऑबफ़स्केशन मैप (Android के लिए mapping.txt) के साथ स्टैक ट्रेस को सिंक्रनाइज़ करता है।

Android Studio में Logcat: इंटरफ़ेस, फ़िल्टर और खोज

Android Studio View → Tool Windows → Logcat (Alt + 6) के माध्यम से सुलभ एक ग्राफिकल Logcat इंटरफ़ेस प्रदान करता है। Logcat विंडो रीयल टाइम में अपडेट होती है, कनेक्टेड डिवाइस के सभी संदेश दिखाती है और सामान्य स्ट्रीम से वांछित जानकारी को अलग करने के लिए लचीले फ़िल्टर कॉन्फ़िगर करने की अनुमति देती है।

स्तर और टैग द्वारा फ़िल्टरिंग

Log Level ड्रॉपडाउन न्यूनतम स्तर द्वारा संदेशों को फ़िल्टर करता है: केवल चेतावनी और त्रुटियाँ देखने के लिए WARN चुनें, VERBOSE, DEBUG और INFO को छिपाते हुए। खोज फ़ील्ड संदेश टेक्स्ट या टैग द्वारा खोजने की अनुमति देता है — regex समर्थित है, जो पैटर्न द्वारा संदेश खोजने के लिए सुविधाजनक है।

सहेजे गए फ़िल्टर

Saved Filters — Android Studio में Logcat की एक शक्तिशाली सुविधा। आप एक फ़िल्टर बना सकते हैं जो केवल आपके एप्लिकेशन के टैग (tag:MyApp) और WARN+ स्तर वाले संदेश दिखाता है। फ़िल्टर सत्रों के बीच सहेजे जाते हैं और ड्रॉपडाउन सूची से उपलब्ध होते हैं। कई मॉड्यूल वाली परियोजनाओं के लिए, प्रत्येक मॉड्यूल के लिए एक अलग फ़िल्टर बनाएँ।

text
# एप्लिकेशन लॉग को फ़िल्टर करने के लिए उदाहरण अभिव्यक्ति
tag:"MyApp" level:WARN # केवल MyApp के लिए WARN+
package:"com.mycompany" # पैकेज के सभी लॉग
-tag:"okhttp" # OkHttp लॉग को बाहर करें

निर्यात और विश्लेषण

Logcat लॉग को Save to File आइकन के माध्यम से टेक्स्ट फ़ाइल में निर्यात किया जा सकता है। यह Jira में टिकट से जोड़ने या लंबे सत्रों का विश्लेषण करने के लिए उपयोगी है। निर्यातित लॉग को किसी भी टेक्स्ट एडिटर में खोला जा सकता है और पैटर्न खोजने के लिए grep लागू किया जा सकता है। फ़ॉर्मेटेड देखने के लिए, logcat-color उपयोगिता का उपयोग करें।

ADB logcat: उन्नत कार्य के लिए टर्मिनल कमांड

ADB logcat — Logcat का कंसोल संस्करण, जो Android Debug Bridge के माध्यम से सुलभ है। इसका मुख्य लाभ CI सर्वरों, ऑटोमेशन स्क्रिप्ट और बिना Android Studio के उपकरणों पर चलाने की क्षमता है। ADB logcat GUI के समान सभी फ़िल्टर का समर्थन करता है, लेकिन कमांड लाइन लचीलेपन के साथ।

मूल कमांड

adb logcat कमांड बिना तर्कों के रीयल टाइम में पूरे बफ़र को आउटपुट करता है। रोकने के लिए Ctrl+C का उपयोग करें। -c फ़्लैग रिकॉर्डिंग शुरू करने से पहले बफ़र को साफ़ करता है — यह तब सुविधाजनक होता है जब आपको वर्तमान परीक्षण के लॉग को पिछले संदेशों से अलग करने की आवश्यकता होती है। -b फ़्लैग बफ़र प्रकार चुनता है: main, system, events, crash (Android 12+).

bash
# बफ़र साफ़ करें और MyApp टैग के साथ लॉग रिकॉर्डिंग शुरू करें
adb logcat -c
adb logcat MyApp:D *:S

# लॉग को फ़ाइल में सहेजें
adb logcat -d > logcat_dump.txt

# प्रक्रिया PID द्वारा फ़िल्टरिंग
adb logcat --pid=12345

grep और awk द्वारा फ़िल्टरिंग

ADB का Unix उपयोगिताओं के साथ संयोजन अधिकतम लचीलापन देता है। उदाहरण के लिए, फ़िल्टर "*:S TAG:D" केवल TAG टैग वाले DEBUG स्तर और उससे ऊपर के संदेश दिखाता है, बाकी सभी को छिपाता है। केवल अपवाद देखने के लिए grep -i exception का उपयोग करें। त्रुटि आवृत्ति का विश्लेषण करने के लिए, टैग कॉलम पर sort | uniq -c लागू करें।

CI/CD में Logcat

CI सर्वरों पर, Logcat का उपयोग UI परीक्षण चलाने के दौरान डायग्नोस्टिक्स एकत्र करने के लिए किया जाता है। विशिष्ट पाइपलाइन: परीक्षण चलाने से पहले बफ़र साफ़ किया जाता है, परीक्षण निष्पादन के बाद लॉग डंप बिल्ड आर्टिफैक्ट के रूप में सहेजा जाता है। यदि परीक्षण विफल होता है, तो लॉग यह निर्धारित कर सकते हैं कि विफलता ANR, अनहैंडल्ड अपवाद या नेटवर्क टाइमआउट के कारण हुई थी या नहीं।

कोड में लॉगिंग: Log.d, Log.e और Timber

android.util.Log क्लास — Logcat में संदेश लिखने के लिए बिल्ट-इन API है। Log.v, Log.d, Log.i, Log.w, Log.e और Log.wtf एक टैग (स्ट्रिंग) और संदेश (स्ट्रिंग) या संदेश + Throwable स्वीकार करते हैं। संदेशों को फ़ॉर्मेट करने के लिए String.format या Kotlin String templates का उपयोग करें — स्ट्रिंग कॉन्केटनेशन से बचें, जो heap में अनावश्यक ऑब्जेक्ट बनाता है।

Timber लाइब्रेरी

Timber — Jake Wharton की एक लोकप्रिय लाइब्रेरी है जो बिल्ट-इन Log API की कमियों को दूर करती है। Timber स्वचालित रूप से उस क्लास के नाम के आधार पर टैग सम्मिलित करता है जिसने लॉगिंग को कॉल किया और प्रत्येक कॉल में टैग पास करने की आवश्यकता नहीं होती है। Timber सशर्त लॉगिंग का भी समर्थन करता है: Release बिल्ड में, Application.onCreate में एक पंक्ति से Timber.v और Timber.d कॉल को अक्षम किया जा सकता है।

kotlin
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // बिल्ट-इन Log API
        Log.d("MainActivity", "onCreate called")

        // Timber — क्लास नाम से स्वचालित टैग
        Timber.d("onCreate called")
    }

    private fun loadData() {
        try {
            val result = fetchFromNetwork()
            Timber.i("Data loaded: $result")
        } catch (e: IOException) {
            Timber.e(e, "Failed to load data")
        }
    }
}

Release के लिए सशर्त लॉगिंग

Release बिल्ड में Logcat बफ़र पर लोड कम करने और संवेदनशील जानकारी के रिसाव को रोकने के लिए VERBOSE और DEBUG लॉग को अक्षम करने की अनुशंसा की जाती है। Timber PlantingTree के माध्यम से इस समस्या को हल करता है: Debug फ्लेवर में DebugTree लगाया जाता है (सब कुछ लॉग करता है), Release में — CrashReportingTree (केवल Crashlytics के माध्यम से ERROR लॉग करता है)। बिल्ट-इन Log API सशर्त लॉगिंग का समर्थन नहीं करता है — डेवलपर को प्रत्येक कॉल को if (BuildConfig.DEBUG) से लपेटना होता है।

अक्सर पूछे जाने वाले प्रश्न

परीक्षण चलाने से पहले Logcat बफ़र कैसे साफ़ करें

परीक्षण चलाने से पहले adb logcat -c कमांड का उपयोग करें। वैकल्पिक रूप से, Android Studio में Logcat विंडो में Clear Logcat बटन (कचरा) दबाएँ। सफ़ाई अन्य प्रक्रियाओं के सिस्टम बफ़र को प्रभावित नहीं करती, केवल वर्तमान कनेक्शन को प्रभावित करती है।

Logcat बफ़र का आकार कैसे बढ़ाएँ

बफ़र को 2 MB तक बढ़ाने के लिए adb logcat -G 2M निष्पादित करें। अधिकतम आकार डिवाइस पर निर्भर करता है: Android 10+ पर 16 MB तक उपलब्ध है। परिवर्तन डिवाइस के रिबूट होने तक बना रहता है। स्थायी सेटिंग के लिए, device tree में build.prop का उपयोग करें।

Logcat एप्लिकेशन के लॉग क्यों नहीं दिखा रहा है

संभावित कारण: एप्लिकेशन Release मोड में चल रहा है (Timber.v/d लॉग अक्षम हैं), Logcat फ़िल्टर आवश्यक स्तर छिपा रहा है, या आप गलत डिवाइस से कनेक्ट हैं। यह भी जाँचें कि आपने Android Studio में एप्लिकेशन की प्रक्रिया चुनी है, system_process नहीं।

Logcat से क्रैश लॉग कैसे पढ़ें

FATAL EXCEPTION वाली पंक्ति खोजें, जिसके नीचे पूरा स्टैक ट्रेस होता है। पहली पंक्ति में अपवाद प्रकार और संदेश होता है, बाद की पंक्तियों में फ़ाइल और कोड लाइन के साथ कॉल श्रृंखला होती है। सभी लॉग के बीच त्वरित खोज के लिए grep "FATAL EXCEPTION" का उपयोग करें।

ANR क्या है और Logcat में इसका पता कैसे लगाएं

ANR (Application Not Responding) — एक स्थिति जहाँ मुख्य थ्रेड (UI thread) 5 सेकंड से अधिक समय तक ब्लॉक रहता है। Logcat में, ANR ActivityManager टैग और "ANR in ..." टेक्स्ट वाले संदेश के रूप में दिखाई देता है जिसमें सभी थ्रेड का स्टैक ट्रेस संलग्न होता है। टैग:ActivityManager level:ERROR फ़िल्टर का उपयोग करें।

निष्कर्ष

  • Logcat — Android सिस्टम बफ़र जो ADB और Android Studio की बिल्ट-इन विंडो के माध्यम से सुलभ है
  • छह स्तर लॉगिंग के (VERBOSE — ASSERT) संदेश के महत्व और फ़िल्टरिंग थ्रेशोल्ड को निर्धारित करते हैं
  • टैग त्वरित फ़िल्टरिंग के लिए एप्लिकेशन मॉड्यूल द्वारा संदेशों को समूहित करने की अनुमति देते हैं
  • ADB logcat grep/awk के साथ GUI इंटरफ़ेस से अधिक लचीला है और CI/CD पाइपलाइनों के लिए उपयुक्त है
  • Timber लॉगिंग को सरल बनाता है, स्वचालित रूप से टैग सम्मिलित करता है और Release में Debug स्तरों को अक्षम करता है
  • क्रैश लॉग अपवादों और स्टैक ट्रेस के साथ प्रत्येक क्रैश पर स्वचालित रूप से Logcat में आते हैं
  • सहेजे गए फ़िल्टर Android Studio में दैनिक लॉग विश्लेषण को गति देते हैं

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें