Logcat — wat is het, logniveaus en werken met logs

Auteur: IT Sectr Gepubliceerd: 2026-05-06 Leestijd: 8 min

Logcat — is de Android SDK-tool voor het bekijken van systeemberichten en applicatielogs in realtime, beschikbaar via ADB of de ingebouwde console van Android Studio. Volgens Android Developers verzamelt Logcat berichten van alle systeemprocessen, filtert ze op belangrijkheidsniveaus en tags en stelt de ontwikkelaar in staat fouten te diagnosticeren, code-uitvoering te volgen en prestaties te analyseren. Logcat — de belangrijkste informatiebron bij het debuggen van Android-applicaties.

Belangrijkste punten

  • Logcat — consolevenster in Android Studio voor het bekijken van Android-systeemlogs in realtime
  • Logniveaus — VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT — bepalen het belang van het bericht en de filterdrempel
  • Filteren op tags, niveaus en trefwoorden maakt het mogelijk logs van een specifieke applicatie uit de algemene stroom te halen
  • ADB logcat — terminalopdracht voor toegang tot logs zonder Android Studio, via USB of Wi-Fi
  • Crashlogs Exception met stack trace komen automatisch in Logcat terecht en bevatten volledige diagnostiek van de crash

Wat is Logcat in Android

Logcat — is een systeembuffer van Android waarin alle processen (inclusief de Linux-kernel, system_server en applicaties) berichten in een specifiek formaat schrijven. De tool logcat, onderdeel van de Android SDK, leest deze buffer en toont berichten in realtime. Vanaf Android 4.1 (API 16) is de toegang tot Logcat beperkt: applicaties kunnen alleen hun eigen logs lezen en systeemlogs zijn toegankelijk via ADB met debug-toegang.

Elk Logcat-bericht bevat vijf velden: datum en tijd, PID (procesidentificatie), TID (thread-identificatie), logniveau en tag. Het formaat is vast en hetzelfde voor alle Android-versies. Dit maakt het mogelijk om grep-, awk- en sed-hulpprogramma's te gebruiken voor het filteren van logs in CI/CD-pijplijnen zonder afhankelijkheid van IDE.

Logs worden opgeslagen in een circulaire buffer met vaste grootte: 256 KB voor main, 256 KB voor system en 256 KB voor events (Android 5+). Bij overloop van de buffer worden oude berichten verwijderd. De ontwikkelaar kan de buffergrootte wijzigen via PROP logcat.size of in de ontwikkelaarsinstellingen van het apparaat.

Logniveaus en tags: structuur van een Logcat-bericht

Zes niveaus van loggen bepalen het belang van het bericht. Android gebruikt standaardniveaus vergelijkbaar met andere platforms, maar met eigen constantenamen in de klasse Log. Het kiezen van het juiste niveau helpt bij het effectief filteren van logs en voorkomt dat kritieke berichten worden overspoeld door secundaire.

NiveauConstanteDoelStandaard weergegeven
VERBOSELog.vMaximaal gedetailleerde debug-informatieNee
DEBUGLog.dDebugberichten voor de ontwikkelaarNee
INFOLog.iInformatieve berichten over de werking van de applicatieJa
WARNLog.wWaarschuwingen over mogelijke problemenJa
ERRORLog.eKritieke fouten en uitzonderingenJa
ASSERTLog.wtfFouten die in principe niet zouden mogen voorkomenJa

Tags: organisatie van berichten per module

Tag — een tekenreeks tot 23 tekens die de bron van het bericht identificeert. Het wordt aanbevolen de klasse- of modulenaam als tag te gebruiken: MainActivity, AuthManager, NetworkModule. Dit maakt het mogelijk logs te filteren op een specifieke component van de applicatie. Voor uniformiteit in het team kunnen tag-constanten in een apart bestand worden gemaakt of kan de bibliotheek Timber worden gebruikt die automatisch de tag op basis van de klassenaam instelt.

Crashlogs en Exception stack trace

Bij een onafgehandelde uitzondering schrijft Android zelf een volledige stack trace in Logcat met vermelding van de klasse, methode, coderegel en aanroepketen. Het crashlog bevat het type uitzondering (NullPointerException, RuntimeException), het bericht en de volgorde van aanroepen van het crashpunt tot het entry point van de applicatie. Voor het analyseren van crashlogs van gebruikersapparaten wordt Firebase Crashlytics gebruikt, die de stack trace synchroniseert met de obfuscatiekaart (mapping.txt voor Android).

Logcat in Android Studio: interface, filters en zoeken

Android Studio biedt een grafische Logcat-interface, toegankelijk via View → Tool Windows → Logcat (Alt + 6). Het Logcat-venster wordt in realtime bijgewerkt, toont alle berichten van het aangesloten apparaat en maakt het mogelijk flexibele filters in te stellen om de benodigde informatie uit de algemene stroom te halen.

Filteren op niveau en tag

De vervolgkeuzelijst Log Level filtert berichten op minimumniveau: selecteer WARN om alleen waarschuwingen en fouten te zien, met VERBOSE, DEBUG en INFO verborgen. Het veld Search maakt zoeken op berichttekst of tag mogelijk — ondersteunt regex, wat handig is voor het zoeken naar berichten op patroon.

Opgeslagen filters

Saved Filters — een krachtige functie van Logcat in Android Studio. U kunt een filter maken dat alleen berichten met de tag van uw applicatie (tag:MyApp) en niveau WARN+ toont. Filters worden tussen sessies bewaard en zijn beschikbaar via de vervolgkeuzelijst. Voor projecten met meerdere modules maakt u een apart filter voor elke module.

text
# Voorbeeld van een expressie voor het filteren van applicatielogs
tag:"MyApp" level:WARN # Alleen WARN+ voor MyApp
package:"com.mycompany" # Alle logs van het pakket
-tag:"okhttp" # OkHttp-logs uitsluiten

Exporteren en analyseren

Logcat-logs kunnen worden geëxporteerd naar een tekstbestand via het pictogram Save to File. Dit is handig voor bijlagen bij tickets in Jira of het analyseren van lange sessies. De geëxporteerde log kan in elke teksteditor worden geopend en grep kan worden toegepast om patronen te zoeken. Voor een geformatteerde weergave gebruikt u het hulpprogramma logcat-color.

ADB logcat: terminalopdrachten voor gevorderd werk

ADB logcat — de consoleversie van Logcat, beschikbaar via Android Debug Bridge. Het belangrijkste voordeel is de mogelijkheid om te draaien op CI-servers, in automatiseringsscripts en op apparaten zonder Android Studio. ADB logcat ondersteunt allezelfde filters als de GUI, maar met de flexibiliteit van de opdrachtregel.

Basisopdrachten

De opdracht adb logcat zonder argumenten toont de volledige buffer in realtime. Gebruik Ctrl+C om te stoppen. De vlag -c wist de buffer voordat de opname begint — dit is handig wanneer u de logs van de huidige test wilt isoleren van eerdere berichten. De vlag -b selecteert het buffertype: main, system, events, crash (Android 12+).

bash
# Buffer wissen en loggen starten met tag MyApp
adb logcat -c
adb logcat MyApp:D *:S

# Logs opslaan in bestand
adb logcat -d > logcat_dump.txt

# Filteren op PID van het proces
adb logcat --pid=12345

Filteren met grep en awk

Combinatie van ADB met unix-hulpprogramma's biedt maximale flexibiliteit. Bijvoorbeeld, het filter "*:S TAG:D" toont alleen berichten met tag TAG van niveau DEBUG en hoger, en verbergt alle andere. Gebruik grep -i exception om alleen Exception te bekijken. Voor analyse van de foutfrequentie past u sort | uniq -c toe op de tag-kolom.

Logcat in CI/CD

Op CI-servers wordt Logcat gebruikt voor het verzamelen van diagnostiek tijdens het uitvoeren van UI-tests. Een typische pijplijn: voor het starten van tests wordt de buffer gewist, na het uitvoeren van tests wordt de dump van logs opgeslagen als build-artefact. Als een test faalt, kan op basis van de logs worden bepaald of de fout werd veroorzaakt door ANR, een onafgehandelde uitzondering of een netwerk-timeout.

Loggen in code: Log.d, Log.e en Timber

De klasse android.util.Log — de ingebouwde API voor het schrijven van berichten naar Logcat. Log.v, Log.d, Log.i, Log.w, Log.e en Log.wtf accepteren een tag (tekenreeks) en een bericht (tekenreeks) of bericht + Throwable. Gebruik String.format of Kotlin String templates voor het formatteren van berichten — vermijd het samenvoegen van tekenreeksen, wat extra objecten op de heap creëert.

De bibliotheek Timber

Timber — een populaire bibliotheek van Jake Wharton die de tekortkomingen van de ingebouwde Log API wegneemt. Timber stelt automatisch de tag in op basis van de klassenaam die het loggen heeft aangeroepen en vereist geen tag bij elke aanroep. Timber ondersteunt ook voorwaardelijk loggen: in een Release-build kunnen Timber.v- en Timber.d-aanroepen met één regel in Application.onCreate worden uitgeschakeld.

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

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

        // Timber — automatische tag op basis van klassenaam
        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")
        }
    }
}

Voorwaardelijk loggen voor Release

In een Release-build wordt aanbevolen VERBOSE- en DEBUG-logs uit te schakelen om de belasting van de Logcat-buffer te verminderen en lekkage van gevoelige informatie te voorkomen. Timber lost deze taak op via PlantingTree: in de Debug-flavor wordt DebugTree (logt alles) geplant, in Release — CrashReportingTree (logt alleen ERROR via Crashlytics). De ingebouwde Log API ondersteunt geen voorwaardelijk loggen — de ontwikkelaar moet elke aanroep omwikkelen met if (BuildConfig.DEBUG).

Veelgestelde vragen

Hoe maak ik de Logcat-buffer leeg voordat ik een test uitvoer?

Gebruik de opdracht adb logcat -c voordat u de test uitvoert. U kunt ook in Android Studio op de knop Clear Logcat (prullenbak) in het Logcat-venster klikken. Wissen heeft geen invloed op de systeembuffers van andere processen, alleen op de huidige verbinding.

Hoe vergroot ik de grootte van de Logcat-buffer?

Voer adb logcat -G 2M uit om de buffer te vergroten tot 2 MB. De maximale grootte hangt af van het apparaat: op Android 10+ is tot 16 MB beschikbaar. De wijziging blijft behouden tot het apparaat opnieuw wordt opgestart. Gebruik build.prop in device tree voor permanente configuratie.

Waarom toont Logcat geen logs van de applicatie?

Mogelijke oorzaken: de applicatie draait in Release-modus (Timber.v/d-logs zijn uitgeschakeld), het Logcat-filter verbergt het benodigde niveau, of u bent verbonden met het verkeerde apparaat. Controleer ook of in Android Studio het applicatieproces is geselecteerd, niet system_process.

Hoe lees ik crashlogs uit Logcat?

Zoek de regel met FATAL EXCEPTION, waaronder de volledige stack trace staat. De eerste regel bevat het type uitzondering en het bericht, de volgende regels de aanroepketen met vermelding van bestand en coderegel. Gebruik grep "FATAL EXCEPTION" voor snel zoeken tussen alle logs.

Wat is ANR en hoe detecteer ik het in Logcat?

ANR (Application Not Responding) — een situatie waarin de hoofdthread (UI-thread) langer dan 5 seconden is geblokkeerd. In Logcat verschijnt ANR als een bericht met de tag ActivityManager en de tekst "ANR in ..." met de stack trace van alle threads bijgevoegd. Gebruik het filter tag:ActivityManager level:ERROR.

Samenvatting

  • Logcat — systeembuffer van Android, toegankelijk via ADB en het ingebouwde venster van Android Studio
  • Zes niveaus van loggen (VERBOSE — ASSERT) bepalen het belang en de filterdrempel van berichten
  • Tags maken het mogelijk berichten te groeperen per applicatiemodule voor snel filteren
  • ADB logcat met grep/awk is flexibeler dan de GUI-interface en geschikt voor CI/CD-pijplijnen
  • Timber vereenvoudigt loggen, stelt automatisch tags in en schakelt Debug-niveaus uit in Release
  • Crashlogs met Exception en stack trace komen automatisch in Logcat bij elke crash
  • Opgeslagen filters in Android Studio versnellen de dagelijkse loganalyse

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook