Logcat — bu nədir, loglama səviyyələri və loglarla iş

Müəllif: IT Sectr Dərc olunub: 2026-05-06 Oxuma vaxtı: 8 dəq

Logcat — Android SDK-nın sistem mesajlarına və tətbiq loglarına real vaxt rejimində baxmaq üçün alətidir, ADB və ya Android Studio-nun daxili konsolu vasitəsilə əlçatandır. Android Developers məlumatına görə, Logcat sistemin bütün proseslərindən mesajları toplayır, onları vaciblik səviyyələrinə və teqlərə görə filtrləyir və tərtibatçıya səhvləri diaqnoz etməyə, kodun icrasını izləməyə və performansı təhlil etməyə imkan verir. Logcat — Android tətbiqlərinin debug edilməsi zamanı əsas məlumat mənbəyidir.

Əsas məqamlar

  • Logcat — Android sistem loglarına real vaxt rejimində baxmaq üçün Android Studio-da konsol pəncərəsi
  • Log səviyyələri — VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT — mesajın vacibliyini və filtrləmə həddini müəyyən edir
  • Filtrləmə teqlər, səviyyələr və açar sözlər üzrə ümumi axından konkret tətbiqin loglarını ayırmağa imkan verir
  • ADB logcat — Android Studio olmadan, USB və ya Wi-Fi vasitəsilə loglara giriş üçün terminal əmri
  • Crash-loglar Exception stack trace ilə avtomatik olaraq Logcat-a düşür və çökmənin tam diaqnostikasını ehtiva edir

Android-də Logcat nədir

Logcat — Android-in sistem buferidir, ona bütün proseslər (Linux nüvəsi, system_server və tətbiqlər daxil olmaqla) müəyyən formatda mesajlar yazır. Android SDK-nın tərkibinə daxil olan logcat aləti bu buferi oxuyur və mesajları real vaxt rejimində göstərir. Android 4.1-dən (API 16) başlayaraq Logcat-a giriş məhdudlaşdırılıb: tətbiqlər yalnız öz loglarını oxuya bilər, sistem logları isə ADB vasitəsilə debug girişi ilə əlçatandır.

Hər bir Logcat mesajı beş sahə ehtiva edir: tarix və vaxt, PID (proses identifikatoru), TID (thread identifikatoru), loglama səviyyəsi və teq. Format sabitdir və Android-in bütün versiyaları üçün eynidir. Bu, IDE-yə bağlanmadan CI/CD pipeline-larında logları filtrləmək üçün grep, awk və sed utilitlərindən istifadə etməyə imkan verir.

Loglar sabit ölçülü dairəvi buferdə saxlanılır: main üçün 256 KB, system üçün 256 KB və events üçün 256 KB (Android 5+). Bufer dolduqda köhnə mesajlar silinir. Tərtibatçı bufer ölçüsünü PROP logcat.size və ya cihazın tərtibatçı parametrlərində dəyişə bilər.

Log səviyyələri və teqlər: Logcat mesajının strukturu

Altı səviyyə loglama mesajın vacibliyini müəyyən edir. Android digər platformalara bənzər standart səviyyələrdən istifadə edir, lakin Log sinifində öz sabit adları ilə. Düzgün səviyyə seçimi logları effektiv filtrləməyə və kritik mesajların ikinci dərəcəli mesajlarla boğulmamasına kömək edir.

SəviyyəSabitTəyinatDefolt göstərilir
VERBOSELog.vMaksimum detallı debug məlumatıXeyr
DEBUGLog.dTərtibatçı üçün debug mesajlarıXeyr
INFOLog.iTətbiqin işi haqqında məlumat mesajlarıBəli
WARNLog.wPotensial problemlər barədə xəbərdarlıqlarBəli
ERRORLog.eKritik səhvlər və istisnalarBəli
ASSERTLog.wtfPrinsipcə baş verməməli olan səhvlərBəli

Teqlər: mesajların modullar üzrə təşkili

Teq (tag) — mesaj mənbəyini identifikasiya edən 23 simvola qədər sətir. Teq olaraq sinif və ya modul adından istifadə etmək tövsiyə olunur: MainActivity, AuthManager, NetworkModule. Bu, logları tətbiqin konkret komponenti üzrə filtrləməyə imkan verir. Komandada vahidlik üçün ayrıca faylda teq sabitləri yaratmaq və ya sinif adına görə avtomatik teq qoyan Timber kitabxanasından istifadə etmək olar.

Crash-loglar və Exception stack trace

İşlənməmiş istisna zamanı Android özü Logcat-a sinif, metod, kod sətri və çağırış zəncirini göstərən tam stack trace yazır. Crash-log istisna tipini (NullPointerException, RuntimeException), mesajı və çökmə nöqtəsindən tətbiqin giriş nöqtəsinə qədər çağırış ardıcıllığını ehtiva edir. İstifadəçi cihazlarından crash-logları təhlil etmək üçün Firebase Crashlytics istifadə olunur, o, stack trace-i obfuskasiya xəritəsi (Android üçün mapping.txt) ilə sinxronizasiya edir.

Android Studio-da Logcat: interfeys, filtrlər və axtarış

Android Studio View → Tool Windows → Logcat (Alt + 6) vasitəsilə əlçatan olan qrafik Logcat interfeysini təmin edir. Logcat pəncərəsi real vaxt rejimində yenilənir, qoşulmuş cihazın bütün mesajlarını göstərir və ümumi axından lazımi məlumatı ayırmaq üçün çevik filtrlər konfiqurasiya etməyə imkan verir.

Səviyyə və teq üzrə filtrləmə

Açılan siyahı Log Level mesajları minimum səviyyəyə görə filtrləyir: yalnız xəbərdarlıqları və səhvləri görmək üçün WARN seçin, VERBOSE, DEBUG və INFO-nu gizlədin. Axtarış sahəsi mesaj mətni və ya teq üzrə axtarışa imkan verir — regex dəstəklənir, bu da nümunə üzrə mesaj axtarmaq üçün əlverişlidir.

Saxlanılmış filtrlər

Saved Filters — Android Studio-da Logcat-ın güclü funksiyası. Yalnız tətbiqinizin teqi (tag:MyApp) və WARN+ səviyyəsi olan mesajları göstərən filtrlər yarada bilərsiniz. Filtrlər sessiyalar arasında saxlanılır və açılan siyahıdan əlçatandır. Bir neçə modullu layihələr üçün hər modul üçün ayrıca filtr yaradın.

text
# Tətbiq loglarını filtrləmək üçün nümunə ifadə
tag:"MyApp" level:WARN # Yalnız MyApp üçün WARN+
package:"com.mycompany" # Paketin bütün loqları
-tag:"okhttp" # OkHttp loqlarını istisna et

Eksport və analiz

Logcat logları Save to File ikonası vasitəsilə mətn faylına ixrac edilə bilər. Bu, Jira-da tapşırıqlara əlavə etmək və ya uzun sessiyaları təhlil etmək üçün faydalıdır. İxrac edilmiş log istənilən mətn redaktorunda açıla bilər və nümunələri axtarmaq üçün grep tətbiq oluna bilər. Formatlaşdırılmış baxış üçün logcat-color utilitindən istifadə edin.

ADB logcat: qabaqcıl iş üçün terminal əmrləri

ADB logcat — Android Debug Bridge vasitəsilə əlçatan olan Logcat-ın konsol versiyası. Onun əsas üstünlüyü CI serverlərində, avtomatlaşdırma skriptlərində və Android Studio olmayan cihazlarda işə salma imkanıdır. ADB logcat GUI ilə eyni filtrlərin hamısını dəstəkləyir, lakin əmr sətri çevikliyi ilə.

Əsas əmrlər

adb logcat əmri arqumentsiz bütün buferi real vaxt rejimində göstərir. Dayandırmaq üçün Ctrl+C istifadə edin. -c bayrağı yazmağa başlamazdan əvvəl buferi təmizləyir — bu, cari testin loglarını əvvəlki mesajlardan təcrid etmək lazım olduqda əlverişlidir. -b bayrağı bufer tipini seçir: main, system, events, crash (Android 12+).

bash
# Buferi təmizlə və MyApp teqi ilə log yazmağa başla
adb logcat -c
adb logcat MyApp:D *:S

# Logları fayla yadda saxla
adb logcat -d > logcat_dump.txt

# Prosesin PID-ə görə filtrləmə
adb logcat --pid=12345

grep və awk ilə filtrləmə

ADB-nin unix utilitləri ilə birləşməsi maksimum çeviklik verir. Məsələn, "*:S TAG:D" filtri yalnız TAG teqi ilə DEBUG səviyyəsi və yuxarı olan mesajları göstərir, qalanlarını gizlədir. Yalnız Exception-u görmək üçün grep -i exception istifadə edin. Səhv tezliyini təhlil etmək üçün teq sütununda sort | uniq -c tətbiq edin.

CI/CD-də Logcat

CI serverlərində Logcat UI testlərinin icrası zamanı diaqnostika toplamaq üçün istifadə olunur. Tipik pipeline: testlər başlamazdan əvvəl bufer təmizlənir, testlər yerinə yetirildikdən sonra logların dump-ı tikinti artifaktı kimi saxlanılır. Test uğursuz olarsa, loglara əsasən nasazlığın ANR, işlənməmiş istisna və ya şəbəkə timeout-u səbəbindən baş verdiyini müəyyən etmək olar.

Kodda loglama: Log.d, Log.e və Timber

android.util.Log sinifi — Logcat-a mesaj yazmaq üçün daxili API. Log.v, Log.d, Log.i, Log.w, Log.e və Log.wtf teq (sətir) və mesaj (sətir) və ya mesaj + Throwable qəbul edir. Mesajları formatlaşdırmaq üçün String.format və ya Kotlin String templates istifadə edin — heap-də əlavə obyektlər yaradan sətir birləşməsindən çəkinin.

Timber kitabxanası

Timber — daxili Log API-nin çatışmazlıqlarını aradan qaldıran Jake Wharton-un məşhur kitabxanası. Timber loglamanı çağıran sinifin adına görə avtomatik teq qoyur və hər çağırışda teq ötürülməsini tələb etmir. Timber həmçinin şərti loglamanı dəstəkləyir: Release quruluşunda Timber.v və Timber.d çağırışlarını Application.onCreate-də bir sətirlə söndürmək olar.

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

        // Daxili Log API
        Log.d("MainActivity", "onCreate called")

        // Timber — sinif adına görə avtomatik teq
        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 üçün şərti loglama

Release quruluşunda VERBOSE və DEBUG loglarını söndürmək tövsiyə olunur ki, Logcat buferinə yük azalsın və həssas məlumatların sızması istisna edilsin. Timber bu tapşırığı PlantingTree vasitəsilə həll edir: Debug flavorunda DebugTree (hər şeyi loglayır), Release-də isə CrashReportingTree (yalnız ERROR-u Crashlytics vasitəsilə loglayır) əkilir. Daxili Log API şərti loglamanı dəstəkləmir — tərtibatçı hər çağırışı if (BuildConfig.DEBUG) ilə əhatə etməlidir.

Tez-tez verilən suallar

Testi işə salmazdan əvvəl Logcat buferini necə təmizləmək olar?

İstifadə edin testi işə salmazdan əvvəl adb logcat -c əmrini. Alternativ olaraq Android Studio-da Logcat pəncərəsində Clear Logcat düyməsini (zibil qutusu) basın. Təmizləmə digər proseslərin sistem buferlərinə təsir etmir, yalnız cari bağlantıya təsir edir.

Logcat buferinin ölçüsünü necə artırmaq olar?

Yerinə yetirin buferi 2 MB-a qədər artırmaq üçün adb logcat -G 2M əmrini. Maksimum ölçü cihazdan asılıdır: Android 10+-da 16 MB-a qədər mövcuddur. Dəyişiklik cihaz yenidən başladılana qədər saxlanılır. Daimi konfiqurasiya üçün device tree-də build.prop istifadə edin.

Niyə Logcat tətbiqin loglarını göstərmir?

Mümkün səbəblər: tətbiq Release rejimində işə salınıb (Timber.v/d logları söndürülüb), Logcat filtri lazımi səviyyəni gizlədir və ya yanlış cihaza qoşulmusunuz. Həmçinin Android Studio-da tətbiq prosesinin seçildiyini yoxlayın, system_process yox.

Logcat-dən crash-logları necə oxumaq olar?

Sətri FATAL EXCEPTION ilə tapın, onun altında tam stack trace yerləşir. Birinci sətir istisna tipini və mesajı ehtiva edir, sonrakı sətirlər fayl və kod sətirini göstərən çağırış zənciridir. Bütün loglar arasında sürətli axtarış üçün grep "FATAL EXCEPTION" istifadə edin.

ANR nədir və onu Logcat-da necə aşkar etmək olar?

ANR (Application Not Responding) — əsas thread-in (UI thread) 5 saniyədən çox bloklandığı vəziyyətdir. Logcat-da ANR ActivityManager teqi ilə "ANR in ..." mətni və bütün thread-lərin stack trace-i əlavə olunmuş mesaj kimi görünür. tag:ActivityManager level:ERROR filtrindən istifadə edin.

Xülasə

  • Logcat — ADB və Android Studio-nun daxili pəncərəsi vasitəsilə əlçatan olan Android sistem buferi
  • Altı səviyyə loglama (VERBOSE — ASSERT) mesajların vacibliyini və filtrləmə həddini müəyyən edir
  • Teqlər sürətli filtrləmə üçün mesajları tətbiq modulları üzrə qruplaşdırmağa imkan verir
  • ADB logcat grep/awk ilə GUI interfeysindən daha çevikdir və CI/CD pipeline-ları üçün uyğundur
  • Timber loglamanı sadələşdirir, avtomatik teq qoyur və Release-də Debug səviyyələrini söndürür
  • Crash-loglar Exception və stack trace ilə hər çökmədə avtomatik olaraq Logcat-a düşür
  • Saxlanılmış filtrlər Android Studio-da gündəlik log analizini sürətləndirir

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun