Logcat — co to je, úrovně logování a práce s logy

Autor: IT Sectr Publikováno: 2026-05-06 Doba čtení: 8 min

Logcat — je nástroj Android SDK pro prohlížení systémových zpráv a logů aplikací v reálném čase, dostupný přes ADB nebo vestavěnou konzoli Android Studio. Podle Android Developers Logcat shromažďuje zprávy ze všech procesů systému, filtruje je podle úrovní důležitosti a tagů a umožňuje vývojáři diagnostikovat chyby, sledovat provádění kódu a analyzovat výkon. Logcat — hlavní zdroj informací při ladění aplikací pro Android.

Hlavní body

  • Logcat — konzolové okno v Android Studio pro prohlížení systémových logů Androidu v reálném čase
  • Úrovně logů — VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT — určují důležitost zprávy a práh filtrování
  • Filtrování podle tagů, úrovní a klíčových slov umožňuje oddělit logy konkrétní aplikace z celkového toku
  • ADB logcat — příkaz terminálu pro přístup k logům bez Android Studio, přes USB nebo Wi-Fi
  • Logy pádů Exception se stack trace se automaticky dostávají do Logcatu a obsahují úplnou diagnostiku pádu

Co je Logcat v Androidu

Logcat — je systémový buffer Androidu, do kterého všechny procesy (včetně jádra Linux, system_server a aplikací) zapisují zprávy určitého formátu. Nástroj logcat, který je součástí Android SDK, tento buffer čte a zobrazuje zprávy v reálném čase. Od Androidu 4.1 (API 16) je přístup k Logcatu omezen: aplikace mohou číst pouze své vlastní logy a systémové logy jsou dostupné přes ADB s debug přístupem.

Každá zpráva Logcatu obsahuje pět polí: datum a čas, PID (identifikátor procesu), TID (identifikátor vlákna), úroveň logování a tag. Formát je pevný a stejný pro všechny verze Androidu. To umožňuje používat nástroje grep, awk a sed pro filtrování logů v CI/CD pipeline bez závislosti na IDE.

Logy jsou ukládány v kruhovém bufferu pevné velikosti: 256 KB pro main, 256 KB pro system a 256 KB pro events (Android 5+). Při přetečení bufferu jsou staré zprávy smazány. Vývojář může změnit velikost bufferu pomocí PROP logcat.size nebo v nastavení pro vývojáře zařízení.

Úrovně logů a tagy: struktura zprávy Logcatu

Šest úrovní logování určuje důležitost zprávy. Android používá standardní úrovně podobné jiným platformám, ale s vlastními názvy konstant ve třídě Log. Výběr správné úrovně pomáhá efektivně filtrovat logy a nezahlcovat kritické zprávy vedlejšími.

ÚroveňKonstantaÚčelZobrazeno ve výchozím stavu
VERBOSELog.vMaximálně podrobné informace pro laděníNe
DEBUGLog.dLadicí zprávy pro vývojářeNe
INFOLog.iInformační zprávy o činnosti aplikaceAno
WARNLog.wVarování o potenciálních problémechAno
ERRORLog.eKritické chyby a výjimkyAno
ASSERTLog.wtfChyby, které by v zásadě neměly nastatAno

Tagy: organizace zpráv podle modulů

Tag — řetězec až 23 znaků identifikující zdroj zprávy. Doporučuje se používat název třídy nebo modulu jako tag: MainActivity, AuthManager, NetworkModule. To umožňuje filtrovat logy podle konkrétní komponenty aplikace. Pro jednotnost v týmu lze vytvořit konstanty tagů v samostatném souboru nebo použít knihovnu Timber, která automaticky nastaví tag podle názvu třídy.

Logy pádů a stack trace výjimky

Při neošetřené výjimce Android sám zapíše do Logcatu úplný stack trace s uvedením třídy, metody, řádku kódu a řetězce volání. Log pádu obsahuje typ výjimky (NullPointerException, RuntimeException), zprávu a posloupnost volání od bodu pádu ke vstupnímu bodu aplikace. Pro analýzu logů pádů ze zařízení uživatelů se používá Firebase Crashlytics, který synchronizuje stack trace s mapou obfuskace (mapping.txt pro Android).

Logcat v Android Studio: rozhraní, filtry a vyhledávání

Android Studio poskytuje grafické rozhraní Logcatu, přístupné přes View → Tool Windows → Logcat (Alt + 6). Okno Logcatu se aktualizuje v reálném čase, zobrazuje všechny zprávy připojeného zařízení a umožňuje konfigurovat flexibilní filtry pro oddělení potřebných informací z celkového toku.

Filtrování podle úrovně a tagu

Rozbalovací seznam Log Level filtruje zprávy podle minimální úrovně: vyberte WARN pro zobrazení pouze varování a chyb, skrytím VERBOSE, DEBUG a INFO. Pole Search umožňuje vyhledávání podle textu zprávy nebo tagu — podporuje regex, což je vhodné pro vyhledávání zpráv podle vzoru.

Uložené filtry

Saved Filters — výkonná funkce Logcatu v Android Studio. Můžete vytvořit filtr, který zobrazuje pouze zprávy s tagem vaší aplikace (tag:MyApp) a úrovní WARN+. Filtry se ukládají mezi relacemi a jsou k dispozici z rozbalovacího seznamu. Pro projekty s více moduly vytvořte samostatný filtr pro každý modul.

text
# Příklad výrazu pro filtrování logů aplikace
tag:"MyApp" level:WARN # Pouze WARN+ pro MyApp
package:"com.mycompany" # Všechny logy balíčku
-tag:"okhttp" # Vyloučit logy OkHttp

Export a analýza

Logy Logcatu lze exportovat do textového souboru přes ikonu Save to File. To je užitečné pro přiložení k ticketům v Jira nebo analýzu dlouhých relací. Exportovaný log lze otevřít v libovolném textovém editoru a použít grep pro vyhledávání vzorů. Pro formátované zobrazení použijte nástroj logcat-color.

ADB logcat: příkazy terminálu pro pokročilou práci

ADB logcat — konzolová verze Logcatu, dostupná přes Android Debug Bridge. Její hlavní výhodou je možnost spuštění na CI serverech, v automatizačních skriptech a na zařízeních bez Android Studio. ADB logcat podporuje všechny stejné filtry jako GUI, ale s flexibilitou příkazového řádku.

Základní příkazy

Příkaz adb logcat bez argumentů zobrazuje celý buffer v reálném čase. Pro zastavení použijte Ctrl+C. Přepínač -c čistí buffer před zahájením záznamu — to je vhodné, když je třeba izolovat logy aktuálního testu od předchozích zpráv. Přepínač -b vybírá typ bufferu: main, system, events, crash (Android 12+).

bash
# Vyčistit buffer a zahájit záznam logů s tagem MyApp
adb logcat -c
adb logcat MyApp:D *:S

# Uložit logy do souboru
adb logcat -d > logcat_dump.txt

# Filtrování podle PID procesu
adb logcat --pid=12345

Filtrování pomocí grep a awk

Kombinace ADB s unixovými nástroji poskytuje maximální flexibilitu. Například filtr "*:S TAG:D" zobrazuje pouze zprávy s tagem TAG úrovně DEBUG a vyšší, skrývá všechny ostatní. Pro zobrazení pouze Exception použijte grep -i exception. Pro analýzu četnosti chyb aplikujte sort | uniq -c na sloupec tagu.

Logcat v CI/CD

Na CI serverech se Logcat používá pro sběr diagnostiky při spouštění UI testů. Typická pipeline: před spuštěním testů se buffer vyčistí, po provedení testů se dump logů uloží jako artefakt sestavení. Pokud test selže, podle logů lze určit, zda bylo selhání způsobeno ANR, neošetřenou výjimkou nebo síťovým timeoutem.

Logování v kódu: Log.d, Log.e a Timber

Třída android.util.Log — vestavěné API pro zápis zpráv do Logcatu. Log.v, Log.d, Log.i, Log.w, Log.e a Log.wtf přijímají tag (řetězec) a zprávu (řetězec) nebo zprávu + Throwable. Pro formátování zpráv používejte String.format nebo Kotlin String templates — vyhněte se konkatenaci řetězců, která vytváří další objekty v haldě.

Knihovna Timber

Timber — populární knihovna Jakea Whartona, která odstraňuje nedostatky vestavěného Log API. Timber automaticky nastaví tag podle názvu třídy, která logování zavolala, a nevyžaduje předávání tagu při každém volání. Timber také podporuje podmíněné logování: v Release sestavení lze volání Timber.v a Timber.d vypnout jedním řádkem v Application.onCreate.

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

        // Vestavěné Log API
        Log.d("MainActivity", "onCreate called")

        // Timber — automatický tag podle názvu třídy
        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")
        }
    }
}

Podmíněné logování pro Release

V Release sestavení se doporučuje vypnout VERBOSE a DEBUG logy, aby se snížilo zatížení bufferu Logcatu a vyloučil únik citlivých informací. Timber řeší tento úkol pomocí PlantingTree: v Debug flavoru se zasadí DebugTree (loguje vše), v Release — CrashReportingTree (loguje pouze ERROR přes Crashlytics). Vestavěné Log API nepodporuje podmíněné logování — vývojář musí každé volání obalit do if (BuildConfig.DEBUG).

Často kladené otázky

Jak vyčistit buffer Logcatu před spuštěním testu?

Použijte příkaz adb logcat -c před spuštěním testu. Alternativně v Android Studio stiskněte tlačítko Clear Logcat (koš) v okně Logcatu. Čištění neovlivňuje systémové buffery jiných procesů, pouze aktuální připojení.

Jak zvýšit velikost bufferu Logcatu?

Proveďte adb logcat -G 2M pro zvýšení bufferu na 2 MB. Maximální velikost závisí na zařízení: na Android 10+ je k dispozici až 16 MB. Změna je zachována do restartu zařízení. Pro trvalé nastavení použijte build.prop v device tree.

Proč Logcat nezobrazuje logy aplikace?

Možné příčiny: aplikace běží v Release režimu (logy Timber.v/d jsou vypnuty), filtr Logcatu skrývá potřebnou úroveň nebo jste připojeni k nesprávnému zařízení. Také zkontrolujte, že v Android Studio je vybrán proces aplikace, nikoli system_process.

Jak číst logy pádů z Logcatu?

Najděte řádek s FATAL EXCEPTION, pod kterým je úplný stack trace. První řádek obsahuje typ výjimky a zprávu, následující řádky jsou řetězec volání s uvedením souboru a řádku kódu. Použijte grep "FATAL EXCEPTION" pro rychlé vyhledávání mezi všemi logy.

Co je ANR a jak ho detekovat v Logcatu?

ANR (Application Not Responding) — situace, kdy je hlavní vlákno (UI thread) zablokováno déle než 5 sekund. V Logcatu se ANR zobrazí jako zpráva s tagem ActivityManager a textem "ANR in ..." s přiloženým stack trace všech vláken. Použijte filtr tag:ActivityManager level:ERROR.

Shrnutí

  • Logcat — systémový buffer Androidu, přístupný přes ADB a vestavěné okno Android Studio
  • Šest úrovní logování (VERBOSE — ASSERT) určuje důležitost a práh filtrování zpráv
  • Tagy umožňují seskupovat zprávy podle modulů aplikace pro rychlé filtrování
  • ADB logcat s grep/awk je flexibilnější než GUI rozhraní a vhodný pro CI/CD pipeline
  • Timber zjednodušuje logování, automaticky nastavuje tagy a vypíná Debug úrovně v Release
  • Logy pádů s Exception a stack trace se automaticky dostávají do Logcatu při každém pádu
  • Uložené filtry v Android Studio urychlují každodenní analýzu logů

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také