Logcat — bu nima, loglash darajalari va loglar bilan ishlash

Muallif: IT Sectr Nashr etilgan: 2026-05-06 O'qish vaqti: 8 daq

Logcat — Android SDK-ning tizim xabarlari va ilovalar loglarini real vaqt rejimida ko'rish vositasi bo'lib, ADB yoki Android Studio-ning o'rnatilgan konsoli orqali mavjud. Android Developers ma'lumotiga ko'ra, Logcat tizimning barcha jarayonlaridan xabarlarni to'playdi, ularni muhimlik darajalari va teglari bo'yicha filtrlaydi va dasturchiga xatolarni aniqlash, kod bajarilishini kuzatish va unumdorlikni tahlil qilish imkonini beradi. Logcat — Android ilovalarini tuzatishda asosiy ma'lumot manbai.

Asosiy ma'lumotlar

  • Logcat — Android tizim loglarini real vaqt rejimida ko'rish uchun Android Studio-dagi konsol oynasi
  • Log darajalari — VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT — xabarning muhimligi va filtrlash chegarasini belgilaydi
  • Filtrlash teglar, darajalar va kalit so'zlar bo'yicha umumiy oqimdan ma'lum bir ilovaning loglarini ajratish imkonini beradi
  • ADB logcat — Android Studiosiz, USB yoki Wi-Fi orqali loglarga kirish uchun terminal buyrug'i
  • Crash-loglar Exception stack trace bilan avtomatik ravishda Logcat-ga tushadi va to'liq tashxisni o'z ichiga oladi

Android-da Logcat nima

Logcat — bu Android-ning tizim buferi bo'lib, unga barcha jarayonlar (shu jumladan Linux yadrosi, system_server va ilovalar) ma'lum formatdagi xabarlarni yozadi. Android SDK tarkibiga kiruvchi logcat vositasi ushbu buferni o'qiydi va xabarlarni real vaqt rejimida ko'rsatadi. Android 4.1 (API 16) dan boshlab Logcat-ga kirish cheklangan: ilovalar faqat o'z loglarini o'qiy oladi, tizim loglari esa ADB orqali debug kirishi bilan mavjud.

Har bir Logcat xabari besh maydonni o'z ichiga oladi: sana va vaqt, PID (jarayon identifikatori), TID (ip identifikatori), loglash darajasi va teg. Format barcha Android versiyalari uchun bir xil va o'zgarmasdir. Bu IDE-ga bog'lanmagan holda CI/CD quvurlarida loglarni filtrlash uchun grep, awk va sed yordamchi dasturlaridan foydalanish imkonini beradi.

Loglar sobit o'lchamdagi aylanma buferda saqlanadi: main uchun 256 KB, system uchun 256 KB va events uchun 256 KB (Android 5+). Bufer to'lganda eski xabarlar o'chiriladi. Dasturchi bufer hajmini PROP logcat.size yoki qurilmaning dasturchi sozlamalarida o'zgartirishi mumkin.

Log darajalari va teglar: Logcat xabarining tuzilishi

Olti daraja loglash xabarning muhimligini belgilaydi. Android boshqa platformalarga o'xshash standart darajalardan foydalanadi, lekin Log klassida o'z doimiy nomlari bilan. To'g'ri darajani tanlash loglarni samarali filtrlashga va kritik xabarlarni ikkinchi darajali xabarlar bilan bo'g'maslikka yordam beradi.

DarajaDoimiyMaqsadStandart ko'rsatiladi
VERBOSELog.vMaksimal batafsil tuzatish ma'lumotlariYo'q
DEBUGLog.dDasturchi uchun tuzatish xabarlariYo'q
INFOLog.iIlova ishi haqida ma'lumot xabarlariHa
WARNLog.wPotensial muammolar haqida ogohlantirishlarHa
ERRORLog.eKritik xatolar va istisnolarHa
ASSERTLog.wtfAslida yuz bermasligi kerak bo'lgan xatolarHa

Teglar: xabarlarni modullar bo'yicha tashkil etish

Teg (tag) — xabar manbasini aniqlaydigan 23 belgigacha bo'lgan qator. Teg sifatida sinf yoki modul nomidan foydalanish tavsiya etiladi: MainActivity, AuthManager, NetworkModule. Bu loglarni ilovaning ma'lum bir komponenti bo'yicha filtrlash imkonini beradi. Jamoada bir xillik uchun alohida faylda teg doimiylarini yaratish yoki sinf nomi bo'yicha avtomatik teg qo'yadigan Timber kutubxonasidan foydalanish mumkin.

Crash-loglar va Exception stack trace

Ishlov berilmagan istisnoda Android o'zi Logcat-ga sinf, metod, kod qatori va chaqiruv zanjirini ko'rsatgan holda to'liq stack trace yozadi. Crash-log istisno turini (NullPointerException, RuntimeException), xabarni va qulash nuqtasidan ilovaning kirish nuqtasigacha bo'lgan chaqiruvlar ketma-ketligini o'z ichiga oladi. Foydalanuvchi qurilmalaridan crash-loglarni tahlil qilish uchun Firebase Crashlytics ishlatiladi, u stack trace-ni obfuskatsiya xaritasi (Android uchun mapping.txt) bilan sinxronlashtiradi.

Android Studio-da Logcat: interfeys, filtrlar va qidirish

Android Studio View → Tool Windows → Logcat (Alt + 6) orqali mavjud bo'lgan grafik Logcat interfeysini taqdim etadi. Logcat oynasi real vaqt rejimida yangilanadi, ulangan qurilmaning barcha xabarlarini ko'rsatadi va umumiy oqimdan kerakli ma'lumotni ajratish uchun moslashuvchan filtrlarni sozlash imkonini beradi.

Daraja va teg bo'yicha filtrlash

Ochiladigan ro'yxat Log Level xabarlarni minimal daraja bo'yicha filtrlaydi: faqat ogohlantirishlar va xatolarni ko'rish uchun WARN-ni tanlang, VERBOSE, DEBUG va INFO-ni yashiring. Qidirish maydoni xabar matni yoki teg bo'yicha qidirish imkonini beradi — regex-ni qo'llab-quvvatlaydi, bu naqsh bo'yicha xabarlarni qidirish uchun qulay.

Saqlangan filtrlar

Saved Filters — Android Studio-da Logcat-ning kuchli funksiyasi. Siz faqat ilovangiz tegi (tag:MyApp) va WARN+ darajasi bo'lgan xabarlarni ko'rsatadigan filtr yaratishingiz mumkin. Filtrlar sessiyalar orasida saqlanadi va ochiladigan ro'yxatdan mavjud. Bir nechta modulli loyihalar uchun har bir modul uchun alohida filtr yarating.

text
# Ilova loglarini filtrlash uchun namuna ifoda
tag:"MyApp" level:WARN # Faqat MyApp uchun WARN+
package:"com.mycompany" # Paketning barcha loglari
-tag:"okhttp" # OkHttp loglarini istisno qilish

Eksport va tahlil

Logcat loglari Save to File belgisi orqali matn fayliga eksport qilinishi mumkin. Bu Jira-dagi ticketlarga ilova qilish yoki uzoq sessiyalarni tahlil qilish uchun foydalidir. Eksport qilingan logni istalgan matn muharririda ochish va naqshlarni qidirish uchun grep qo'llash mumkin. Formatlangan ko'rinish uchun logcat-color yordamchi dasturidan foydalaning.

ADB logcat: ilg'or ish uchun terminal buyruqlari

ADB logcat — Android Debug Bridge orqali mavjud bo'lgan Logcat-ning konsol versiyasi. Uning asosiy ustunligi CI serverlarida, avtomatlashtirish skriptlarida va Android Studiosiz qurilmalarda ishga tushirish imkoniyatidir. ADB logcat GUI bilan bir xil filtrlarning barchasini qo'llab-quvvatlaydi, lekin buyruq satri moslashuvchanligi bilan.

Asosiy buyruqlar

adb logcat buyrug'i argumentlarsiz butun buferni real vaqt rejimida ko'rsatadi. To'xtatish uchun Ctrl+C dan foydalaning. -c bayrog'i yozishni boshlashdan oldin buferni tozalaydi — bu joriy test loglarini oldingi xabarlardan ajratish kerak bo'lganda qulay. -b bayrog'i bufer turini tanlaydi: main, system, events, crash (Android 12+).

bash
# Buferni tozala va MyApp tegi bilan log yozishni boshlash
adb logcat -c
adb logcat MyApp:D *:S

# Loglarni faylga saqlash
adb logcat -d > logcat_dump.txt

# Jarayonning PID bo'yicha filtrlash
adb logcat --pid=12345

grep va awk bilan filtrlash

ADB-ni unix yordamchi dasturlari bilan birlashtirish maksimal moslashuvchanlikni beradi. Masalan, "*:S TAG:D" filtri faqat TAG tegi bilan DEBUG darajasi va undan yuqori bo'lgan xabarlarni ko'rsatadi, qolganlarini yashiradi. Faqat Exception-ni ko'rish uchun grep -i exception dan foydalaning. Xato chastotasini tahlil qilish uchun teg ustunida sort | uniq -c qo'llang.

CI/CD da Logcat

CI serverlarida Logcat UI testlarini bajarishda diagnostika to'plash uchun ishlatiladi. Odatdagi quvur: testlarni ishga tushirishdan oldin bufer tozalanadi, testlar bajarilgandan so'ng loglar dumpi qurilish artefakti sifatida saqlanadi. Agar test muvaffaqiyatsiz bo'lsa, loglarga asoslanib, muvaffaqiyatsizlik ANR, ishlov berilmagan istisno yoki tarmoq timeouti sababli bo'lganligini aniqlash mumkin.

Kodda loglash: Log.d, Log.e va Timber

android.util.Log sinfi — Logcat-ga xabarlar yozish uchun o'rnatilgan API. Log.v, Log.d, Log.i, Log.w, Log.e va Log.wtf teg (qator) va xabar (qator) yoki xabar + Throwable qabul qiladi. Xabarlarni formatlash uchun String.format yoki Kotlin String templates dan foydalaning — heap-da qo'shimcha obyektlar yaratadigan qator birlashtirishdan saqlaning.

Timber kutubxonasi

Timber — o'rnatilgan Log API-ning kamchiliklarini bartaraf etadigan Jeyk Uortonning mashhur kutubxonasi. Timber loglashni chaqirgan sinf nomi bo'yicha avtomatik teg qo'yadi va har bir chaqiruvda teg uzatishni talab qilmaydi. Timber shuningdek shartli loglashni qo'llab-quvvatlaydi: Release qurilishida Timber.v va Timber.d chaqiruvlari Application.onCreate-da bir qator bilan o'chirilishi mumkin.

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

        // O'rnatilgan Log API
        Log.d("MainActivity", "onCreate called")

        // Timber — sinf nomi bo'yicha avtomatik teg
        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 uchun shartli loglash

Release qurilishida VERBOSE va DEBUG loglarini o'chirish tavsiya etiladi, bu Logcat buferiga yukni kamaytiradi va maxfiy ma'lumotlarning sizib chiqishini istisno qiladi. Timber bu vazifani PlantingTree orqali hal qiladi: Debug flavorida DebugTree (hamma narsani loglaydi), Release da CrashReportingTree (faqat ERROR-ni Crashlytics orqali loglaydi) ekiladi. O'rnatilgan Log API shartli loglashni qo'llab-quvvatlamaydi — dasturchi har bir chaqiruvni if (BuildConfig.DEBUG) bilan o'rashi kerak.

Ko'p beriladigan savollar

Testni ishga tushirishdan oldin Logcat buferini qanday tozalash mumkin?

Foydalaning testni ishga tushirishdan oldin adb logcat -c buyrug'idan. Shu bilan birga Android Studio-da Logcat oynasidagi Clear Logcat tugmasini (axlat qutisi) bosing. Tozalash boshqa jarayonlarning tizim buferlariga ta'sir qilmaydi, faqat joriy ulanishga ta'sir qiladi.

Logcat buferining hajmini qanday oshirish mumkin?

Bajaring buferni 2 MB ga oshirish uchun adb logcat -G 2M buyrug'ini. Maksimal hajm qurilmaga bog'liq: Android 10+ da 16 MB gacha mavjud. O'zgartirish qurilma qayta ishga tushirilguncha saqlanadi. Doimiy sozlash uchun device tree da build.prop dan foydalaning.

Nega Logcat ilovaning loglarini ko'rsatmaydi?

Mumkin sabablar: ilova Release rejimida ishga tushirilgan (Timber.v/d loglari o'chirilgan), Logcat filtri kerakli darajani yashiradi yoki noto'g'ri qurilmaga ulangansiz. Shuningdek Android Studio-da ilova jarayoni tanlanganligini tekshiring, system_process emas.

Logcat dan crash-loglarni qanday o'qish mumkin?

Qatorni FATAL EXCEPTION bilan toping, uning ostida to'liq stack trace joylashgan. Birinchi qator istisno turi va xabarni o'z ichiga oladi, keyingi qatorlar fayl va kod qatorini ko'rsatadigan chaqiruv zanjiridir. Barcha loglar orasida tez qidirish uchun grep "FATAL EXCEPTION" dan foydalaning.

ANR nima va uni Logcat da qanday aniqlash mumkin?

ANR (Application Not Responding) — asosiy ip (UI thread) 5 soniyadan ko'proq bloklangan holat. Logcat da ANR ActivityManager tegi bilan "ANR in ..." matni va barcha iplarning stack trace-i bilan birga keladi. tag:ActivityManager level:ERROR filtridan foydalaning.

Xulosa

  • Logcat — ADB va Android Studio-ning o'rnatilgan oynasi orqali mavjud bo'lgan Android tizim buferi
  • Olti daraja loglash (VERBOSE — ASSERT) xabarlarning muhimligi va filtrlash chegarasini belgilaydi
  • Teglar tezkor filtrlash uchun xabarlarni ilova modullari bo'yicha guruhlash imkonini beradi
  • ADB logcat grep/awk bilan GUI interfeysidan ko'ra moslashuvchanroq va CI/CD quvurlari uchun mos
  • Timber loglashni soddalashtiradi, avtomatik teg qo'yadi va Release da Debug darajalarini o'chiradi
  • Crash-loglar Exception va stack trace bilan har bir qulashda avtomatik ravishda Logcat-ga tushadi
  • Saqlangan filtrlar Android Studio da kunlik log tahlilini tezlashtiradi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing