Logcat — mi ez, naplózási szintek és munka a naplókkal

Szerző: IT Sectr Megjelenés: 2026-05-06 Olvasási idő: 8 perc

A Logcat — egy Android SDK eszköz a rendszerüzenetek és alkalmazásnaplók valós idejű megtekintéséhez, amely ADB-n vagy az Android Studio beépített konzolján keresztül érhető el. A Android Developers szerint a Logcat összegyűjti az összes rendszerfolyamat üzeneteit, fontossági szintek és címkék szerint szűri őket, és lehetővé teszi a fejlesztő számára a hibák diagnosztizálását, a kód végrehajtásának nyomon követését és a teljesítmény elemzését. Logcat — az Android-alkalmazások hibakeresésének fő információforrása.

Főbb pontok

  • Logcat — konzolablak az Android Studio-ban az Android rendszernaplók valós idejű megtekintéséhez
  • Naplózási szintek — VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT — meghatározzák az üzenet fontosságát és a szűrési küszöböt
  • Szűrés címkék, szintek és kulcsszavak szerint lehetővé teszi egy adott alkalmazás naplóinak kiemelését az általános folyamból
  • ADB logcat — terminálparancs a naplók eléréséhez Android Studio nélkül, USB-n vagy Wi-Fi-n keresztül
  • Összeomlási naplók Exception stack trace-szel automatikusan a Logcat-ba kerülnek, és teljes körű diagnosztikát tartalmaznak

Mi az a Logcat Android-ban

Logcat — az Android rendszerpuffere, amelybe az összes folyamat (beleértve a Linux kernelt, a system_server-t és az alkalmazásokat) meghatározott formátumú üzeneteket ír. A logcat eszköz, amely az Android SDK részét képezi, beolvassa ezt a puffert és valós időben jeleníti meg az üzeneteket. Az Android 4.1 (API 16) óta a Logcat-hoz való hozzáférés korlátozott: az alkalmazások csak saját naplóikat olvashatják, a rendszernaplók pedig ADB-n keresztül debug hozzáféréssel érhetők el.

Minden Logcat üzenet öt mezőt tartalmaz: dátum és idő, PID (folyamatazonosító), TID (szálazonosító), naplózási szint és címke. A formátum rögzített és minden Android-verzióban azonos. Ez lehetővé teszi a grep, awk és sed eszközök használatát a naplók szűrésére CI/CD folyamatokban IDE-függőség nélkül.

A naplók egy rögzített méretű körpufferben tárolódnak: 256 KB a main, 256 KB a system és 256 KB az events számára (Android 5+). A puffer túlcsordulásakor a régi üzenetek törlődnek. A fejlesztő megváltoztathatja a puffer méretét a PROP logcat.size segítségével vagy az eszköz fejlesztői beállításaiban.

Naplózási szintek és címkék: a Logcat üzenet szerkezete

Hat szint határozza meg az üzenet fontosságát. Az Android a többi platformhoz hasonló szabványos szinteket használ, de saját konstansnevekkel a Log osztályban. A megfelelő szint kiválasztása segít a naplók hatékony szűrésében és megakadályozza, hogy a kritikus üzenetek elvesszenek a másodlagosak között.

SzintKonstansRendeltetésAlapértelmezésben látható
VERBOSELog.vMaximálisan részletes hibakeresési információNem
DEBUGLog.dHibakeresési üzenetek a fejlesztő számáraNem
INFOLog.iTájékoztató üzenetek az alkalmazás működésérőlIgen
WARNLog.wFigyelmeztetések lehetséges problémákrólIgen
ERRORLog.eKritikus hibák és kivételekIgen
ASSERTLog.wtfOlyan hibák, amelyek elvileg nem fordulhatnak előIgen

Címkék: az üzenetek modulonkénti szervezése

Címke (tag) — legfeljebb 23 karakterből álló sztring, amely azonosítja az üzenet forrását. Javasolt az osztály vagy modul nevének használata címkeként: MainActivity, AuthManager, NetworkModule. Ez lehetővé teszi a naplók szűrését az alkalmazás egy adott összetevője szerint. A csapat egységessége érdekében létrehozhatók címkekonstansok egy külön fájlban, vagy használható a Timber könyvtár, amely automatikusan beállítja a címkét az osztály neve alapján.

Összeomlási naplók és kivétel stack trace

Kezeletlen kivétel esetén az Android maga írja a Logcat-ba a teljes stack trace-t az osztály, metódus, kódsor és hívási lánc feltüntetésével. Az összeomlási napló tartalmazza a kivétel típusát (NullPointerException, RuntimeException), az üzenetet és a hívások sorrendjét az összeomlás pontjától az alkalmazás belépési pontjáig. A felhasználói eszközökről származó összeomlási naplók elemzéséhez a Firebase Crashlytics használatos, amely szinkronizálja a stack trace-t az obfuszkációs térképpel (mapping.txt Android esetén).

Logcat az Android Studio-ban: felület, szűrők és keresés

Az Android Studio grafikus Logcat felületet biztosít, amely a View → Tool Windows → Logcat (Alt + 6) menüponton keresztül érhető el. A Logcat ablak valós időben frissül, megjeleníti a csatlakoztatott eszköz összes üzenetét, és lehetővé teszi rugalmas szűrők konfigurálását a szükséges információk általános folyamból való kiemeléséhez.

Szűrés szint és címke szerint

A Log Level legördülő lista a minimális szint szerint szűri az üzeneteket: válassza a WARN lehetőséget, hogy csak a figyelmeztetéseket és hibákat lássa, elrejtve a VERBOSE, DEBUG és INFO szinteket. A Search mező lehetővé teszi a keresést üzenetszöveg vagy címke alapján — támogatja a regex-et, ami kényelmes a minták szerinti üzenetkereséshez.

Elmentett szűrők

Saved Filters — a Logcat erőteljes funkciója az Android Studio-ban. Létrehozhat olyan szűrőt, amely csak az alkalmazása címkéjével (tag:MyApp) és WARN+ szinttel rendelkező üzeneteket jeleníti meg. A szűrők a munkamenetek között megmaradnak, és a legördülő listából érhetők el. Több modulos projektekhez hozzon létre külön szűrőt minden modulhoz.

text
# Példa kifejezés az alkalmazásnaplók szűrésére
tag:"MyApp" level:WARN # Csak WARN+ a MyApp számára
package:"com.mycompany" # A csomag összes naplója
-tag:"okhttp" # OkHttp naplók kizárása

Exportálás és elemzés

A Logcat naplók exportálhatók szöveges fájlba a Save to File ikon segítségével. Ez hasznos a Jira jegyekhez való csatoláshoz vagy hosszú munkamenetek elemzéséhez. Az exportált napló bármely szövegszerkesztőben megnyitható, és grep alkalmazható a minták keresésére. Formázott megjelenítéshez használja a logcat-color eszközt.

ADB logcat: terminálparancsok haladó munkához

ADB logcat — a Logcat konzolos változata, amely az Android Debug Bridge-en keresztül érhető el. Fő előnye, hogy futtatható CI-kiszolgálókon, automatizálási szkriptekben és Android Studio nélküli eszközökön. Az ADB logcat ugyanazokat a szűrőket támogatja, mint a GUI, de a parancssor rugalmasságával.

Alapvető parancsok

Az adb logcat parancs argumentumok nélkül a teljes puffert jeleníti meg valós időben. A leállításhoz használja a Ctrl+C billentyűkombinációt. A -c kapcsoló törli a puffert a rögzítés megkezdése előtt — ez akkor hasznos, ha az aktuális teszt naplóit el kell különíteni a korábbi üzenetektől. A -b kapcsoló kiválasztja a puffer típusát: main, system, events, crash (Android 12+).

bash
# Puffer törlése és naplózás indítása MyApp címkével
adb logcat -c
adb logcat MyApp:D *:S

# Naplók mentése fájlba
adb logcat -d > logcat_dump.txt

# Szűrés a folyamat PID-je szerint
adb logcat --pid=12345

Szűrés grep és awk segítségével

Az ADB unix eszközökkel való kombinációja maximális rugalmasságot biztosít. Például a "*:S TAG:D" szűrő csak a TAG címkével rendelkező, DEBUG szintű és magasabb üzeneteket jeleníti meg, az összes többit elrejtve. Csak Exception megtekintéséhez használja a grep -i exception parancsot. A hibagyakoriság elemzéséhez alkalmazza a sort | uniq -c parancsot a címke oszlopon.

Logcat a CI/CD-ben

CI-kiszolgálókon a Logcat-ot az UI tesztek futtatása során történő diagnosztikai adatok gyűjtésére használják. Tipikus folyamat: a tesztek elindítása előtt a puffer törlődik, a tesztek végrehajtása után a naplók dumpja build-összetevőként kerül mentésre. Ha egy teszt sikertelen, a naplók alapján meghatározható, hogy a hibát ANR, kezeletlen kivétel vagy hálózati időtúllépés okozta-e.

Naplózás a kódban: Log.d, Log.e és Timber

Az android.util.Log osztály — a beépített API az üzenetek Logcat-ba írásához. A Log.v, Log.d, Log.i, Log.w, Log.e és Log.wtf egy címkét (sztring) és egy üzenetet (sztring) vagy üzenetet + Throwable-t fogad. Az üzenetek formázásához használja a String.format vagy Kotlin String templates módszert — kerülje a sztringek összefűzését, ami extra objektumokat hoz létre a heap-en.

A Timber könyvtár

Timber — Jake Wharton népszerű könyvtára, amely kiküszöböli a beépített Log API hiányosságait. A Timber automatikusan beállítja a címkét a naplózást meghívó osztály neve alapján, és nem igényli a címke átadását minden egyes hívásnál. A Timber támogatja a feltételes naplózást is: Release buildben a Timber.v és Timber.d hívások egyetlen sorral kikapcsolhatók az Application.onCreate-ban.

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

        // Beépített Log API
        Log.d("MainActivity", "onCreate called")

        // Timber — automatikus címke az osztály neve alapján
        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")
        }
    }
}

Feltételes naplózás Release-hez

Release buildben ajánlott kikapcsolni a VERBOSE és DEBUG naplókat a Logcat puffer terhelésének csökkentése és az érzékeny információk kiszivárgásának megakadályozása érdekében. A Timber ezt a feladatot a PlantingTree-n keresztül oldja meg: a Debug flavorban DebugTree (mindent naplóz), a Release-ben CrashReportingTree (csak ERROR-t naplóz a Crashlytics-en keresztül) kerül ültetésre. A beépített Log API nem támogatja a feltételes naplózást — a fejlesztőnek minden hívást be kell csomagolnia if (BuildConfig.DEBUG) blokkba.

Gyakran Ismételt Kérdések

Hogyan töröljem a Logcat puffert a teszt futtatása előtt?

Használja az adb logcat -c parancsot a teszt futtatása előtt. Alternatívaként az Android Studio-ban kattintson a Clear Logcat gombra (kuka) a Logcat ablakban. A törlés nem befolyásolja más folyamatok rendszerpuffereit, csak az aktuális kapcsolatot.

Hogyan növelhetem a Logcat puffer méretét?

Hajtsa végre az adb logcat -G 2M parancsot a puffer 2 MB-ra növeléséhez. A maximális méret az eszköztől függ: Android 10+ esetén akár 16 MB is elérhető. A változás az eszköz újraindításáig marad meg. Állandó beállításhoz használja a build.prop fájlt a device tree-ben.

Miért nem jeleníti meg a Logcat az alkalmazás naplóit?

Lehetséges okok: az alkalmazás Release módban fut (a Timber.v/d naplók ki vannak kapcsolva), a Logcat szűrő elrejti a szükséges szintet, vagy rossz eszközhöz csatlakozott. Ellenőrizze azt is, hogy az Android Studio-ban az alkalmazás folyamat van kiválasztva, nem a system_process.

Hogyan olvassam az összeomlási naplókat a Logcat-ból?

Keresse meg a sort FATAL EXCEPTION szöveggel, amely alatt a teljes stack trace található. Az első sor tartalmazza a kivétel típusát és az üzenetet, a következő sorok a hívási láncot a fájl és kódsor megjelölésével. Használja a grep "FATAL EXCEPTION" parancsot a gyors kereséshez az összes napló között.

Mi az ANR és hogyan észlelhető a Logcat-ban?

ANR (Application Not Responding) — olyan helyzet, amikor a fő szál (UI thread) több mint 5 másodpercre blokkolva van. A Logcat-ban az ANR ActivityManager címkével és "ANR in ..." szöveggel jelenik meg, az összes szál stack trace-jével együtt. Használja a tag:ActivityManager level:ERROR szűrőt.

Összefoglaló

  • Logcat — Android rendszerpuffer, amely ADB-n és az Android Studio beépített ablakán keresztül érhető el
  • Hat szint (VERBOSE — ASSERT) határozza meg az üzenetek fontosságát és szűrési küszöbét
  • Címkék lehetővé teszik az üzenetek alkalmazásmodulonkénti csoportosítását gyors szűréshez
  • ADB logcat grep/awk-val rugalmasabb, mint a GUI, és alkalmas CI/CD folyamatokhoz
  • Timber leegyszerűsíti a naplózást, automatikusan beállítja a címkéket és kikapcsolja a Debug szinteket Release-ben
  • Összeomlási naplók Exception és stack trace segítségével automatikusan a Logcat-ba kerülnek minden összeomláskor
  • Elmentett szűrők az Android Studio-ban felgyorsítják a napi naplóelemzést

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is