Logcat — apa itu, tingkat logging dan bekerja dengan log

Penulis: IT Sectr Diterbitkan: 2026-05-06 Waktu membaca: 8 mnt

Logcat — adalah alat Android SDK untuk melihat pesan sistem dan log aplikasi secara real-time, tersedia melalui ADB atau konsol bawaan Android Studio. Menurut Android Developers, Logcat mengumpulkan pesan dari semua proses sistem, memfilternya berdasarkan tingkat kepentingan dan tag, serta memungkinkan pengembang mendiagnosis kesalahan, melacak eksekusi kode, dan menganalisis kinerja. Logcat — sumber informasi utama saat men-debug aplikasi Android.

Poin Utama

  • Logcat — jendela konsol di Android Studio untuk melihat log sistem Android secara real-time
  • Tingkat log — VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT — menentukan kepentingan pesan dan ambang filter
  • Pemfilteran berdasarkan tag, tingkat, dan kata kunci memungkinkan memisahkan log aplikasi tertentu dari aliran umum
  • ADB logcat — perintah terminal untuk mengakses log tanpa Android Studio, melalui USB atau Wi-Fi
  • Log crash Exception dengan stack trace masuk ke Logcat secara otomatis dan berisi diagnosis lengkap kegagalan

Apa itu Logcat di Android

Logcat — adalah buffer sistem Android tempat semua proses (termasuk kernel Linux, system_server, dan aplikasi) menulis pesan dalam format tertentu. Alat logcat, yang merupakan bagian dari Android SDK, membaca buffer ini dan menampilkan pesan secara real-time. Mulai Android 4.1 (API 16), akses ke Logcat dibatasi: aplikasi hanya dapat membaca log mereka sendiri, dan log sistem tersedia melalui ADB dengan akses debug.

Setiap pesan Logcat berisi lima bidang: tanggal dan waktu, PID (identifikasi proses), TID (identifikasi utas), tingkat logging, dan tag. Formatnya tetap dan sama untuk semua versi Android. Ini memungkinkan penggunaan utilitas grep, awk, dan sed untuk memfilter log dalam pipeline CI/CD tanpa ketergantungan pada IDE.

Log disimpan dalam buffer melingkar dengan ukuran tetap: 256 KB untuk main, 256 KB untuk system, dan 256 KB untuk events (Android 5+). Saat buffer penuh, pesan lama akan dihapus. Pengembang dapat mengubah ukuran buffer melalui PROP logcat.size atau di pengaturan pengembang perangkat.

Tingkat log dan tag: struktur pesan Logcat

Enam tingkat logging menentukan kepentingan pesan. Android menggunakan tingkat standar yang mirip dengan platform lain, tetapi dengan nama konstanta sendiri di kelas Log. Memilih tingkat yang tepat membantu memfilter log secara efektif dan tidak menenggelamkan pesan kritis dengan pesan sekunder.

TingkatKonstantaTujuanDitampilkan default
VERBOSELog.vInformasi debug yang sangat detailTidak
DEBUGLog.dPesan debug untuk pengembangTidak
INFOLog.iPesan informasi tentang operasi aplikasiYa
WARNLog.wPeringatan tentang potensi masalahYa
ERRORLog.eKesalahan kritis dan pengecualianYa
ASSERTLog.wtfKesalahan yang seharusnya tidak terjadiYa

Tag: organisasi pesan berdasarkan modul

Tag — string hingga 23 karakter yang mengidentifikasi sumber pesan. Disarankan menggunakan nama kelas atau modul sebagai tag: MainActivity, AuthManager, NetworkModule. Ini memungkinkan memfilter log berdasarkan komponen aplikasi tertentu. Untuk keseragaman dalam tim, konstanta tag dapat dibuat dalam file terpisah atau menggunakan pustaka Timber yang secara otomatis menetapkan tag berdasarkan nama kelas.

Log crash dan stack trace pengecualian

Saat pengecualian tidak tertangani, Android sendiri menulis stack trace lengkap ke Logcat dengan menunjukkan kelas, metode, baris kode, dan rantai panggilan. Log crash berisi jenis pengecualian (NullPointerException, RuntimeException), pesan, dan urutan panggilan dari titik kegagalan hingga entry point aplikasi. Untuk menganalisis log crash dari perangkat pengguna, digunakan Firebase Crashlytics yang menyinkronkan stack trace dengan peta obfuscation (mapping.txt untuk Android).

Logcat di Android Studio: antarmuka, filter, dan pencarian

Android Studio menyediakan antarmuka grafis Logcat, dapat diakses melalui View → Tool Windows → Logcat (Alt + 6). Jendela Logcat diperbarui secara real-time, menampilkan semua pesan perangkat yang terhubung, dan memungkinkan konfigurasi filter fleksibel untuk memisahkan informasi yang diperlukan dari aliran umum.

Pemfilteran berdasarkan tingkat dan tag

Daftar tarik-turun Log Level memfilter pesan berdasarkan tingkat minimum: pilih WARN untuk hanya melihat peringatan dan kesalahan, menyembunyikan VERBOSE, DEBUG, dan INFO. Bidang Search memungkinkan pencarian berdasarkan teks pesan atau tag — mendukung regex, yang berguna untuk mencari pesan berdasarkan pola.

Filter tersimpan

Saved Filters — fitur kuat Logcat di Android Studio. Anda dapat membuat filter yang hanya menampilkan pesan dengan tag aplikasi Anda (tag:MyApp) dan tingkat WARN+. Filter disimpan antar sesi dan tersedia dari daftar tarik-turun. Untuk proyek dengan beberapa modul, buat filter terpisah untuk setiap modul.

text
# Contoh ekspresi untuk memfilter log aplikasi
tag:"MyApp" level:WARN # Hanya WARN+ untuk MyApp
package:"com.mycompany" # Semua log paket
-tag:"okhttp" # Kecualikan log OkHttp

Ekspor dan analisis

Log Logcat dapat diekspor ke file teks melalui ikon Save to File. Ini berguna untuk melampirkan ke tiket di Jira atau menganalisis sesi panjang. Log yang diekspor dapat dibuka di editor teks apa pun dan grep dapat diterapkan untuk mencari pola. Untuk tampilan terformat, gunakan utilitas logcat-color.

ADB logcat: perintah terminal untuk pekerjaan lanjutan

ADB logcat — versi konsol Logcat, tersedia melalui Android Debug Bridge. Keuntungan utamanya adalah kemampuan untuk dijalankan di server CI, dalam skrip otomatisasi, dan pada perangkat tanpa Android Studio. ADB logcat mendukung semua filter yang sama dengan GUI, tetapi dengan fleksibilitas baris perintah.

Perintah dasar

Perintah adb logcat tanpa argumen menampilkan seluruh buffer secara real-time. Untuk berhenti, gunakan Ctrl+C. Bendera -c membersihkan buffer sebelum memulai perekaman — ini berguna ketika Anda perlu mengisolasi log pengujian saat ini dari pesan sebelumnya. Bendera -b memilih jenis buffer: main, system, events, crash (Android 12+).

bash
# Bersihkan buffer dan mulai merekam log dengan tag MyApp
adb logcat -c
adb logcat MyApp:D *:S

# Simpan log ke file
adb logcat -d > logcat_dump.txt

# Pemfilteran berdasarkan PID proses
adb logcat --pid=12345

Pemfilteran dengan grep dan awk

Kombinasi ADB dengan utilitas unix memberikan fleksibilitas maksimal. Misalnya, filter "*:S TAG:D" hanya menampilkan pesan dengan tag TAG tingkat DEBUG ke atas, menyembunyikan yang lainnya. Untuk melihat hanya Exception, gunakan grep -i exception. Untuk menganalisis frekuensi kesalahan, terapkan sort | uniq -c pada kolom tag.

Logcat di CI/CD

Di server CI, Logcat digunakan untuk mengumpulkan diagnostik saat menjalankan pengujian UI. Pipeline tipikal: sebelum menjalankan pengujian, buffer dibersihkan; setelah pengujian selesai, dump log disimpan sebagai artefak build. Jika pengujian gagal, berdasarkan log dapat ditentukan apakah kegagalan disebabkan oleh ANR, pengecualian tidak tertangani, atau timeout jaringan.

Logging dalam kode: Log.d, Log.e dan Timber

Kelas android.util.Log — API bawaan untuk menulis pesan ke Logcat. Log.v, Log.d, Log.i, Log.w, Log.e dan Log.wtf menerima tag (string) dan pesan (string) atau pesan + Throwable. Untuk memformat pesan, gunakan String.format atau Kotlin String templates — hindari konkatenasi string yang membuat objek tambahan di heap.

Pustaka Timber

Timber — pustaka populer karya Jake Wharton yang menghilangkan kekurangan API Log bawaan. Timber secara otomatis menetapkan tag berdasarkan nama kelas yang memanggil logging dan tidak memerlukan pengiriman tag di setiap panggilan. Timber juga mendukung logging bersyarat: dalam build Release, panggilan Timber.v dan Timber.d dapat dinonaktifkan dengan satu baris di Application.onCreate.

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

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

        // Timber — tag otomatis berdasarkan nama kelas
        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")
        }
    }
}

Logging bersyarat untuk Release

Dalam build Release, disarankan untuk menonaktifkan log VERBOSE dan DEBUG untuk mengurangi beban pada buffer Logcat dan mengecualikan kebocoran informasi sensitif. Timber menyelesaikan tugas ini melalui PlantingTree: di flavor Debug ditanam DebugTree (mencatat semuanya), di Release — CrashReportingTree (hanya mencatat ERROR melalui Crashlytics). API Log bawaan tidak mendukung logging bersyarat — pengembang harus membungkus setiap panggilan dengan if (BuildConfig.DEBUG).

Pertanyaan yang Sering Diajukan

Bagaimana cara membersihkan buffer Logcat sebelum menjalankan pengujian?

Gunakan perintah adb logcat -c sebelum menjalankan pengujian. Alternatifnya, di Android Studio tekan tombol Clear Logcat (tempat sampah) di jendela Logcat. Pembersihan tidak memengaruhi buffer sistem proses lain, hanya koneksi saat ini.

Bagaimana cara meningkatkan ukuran buffer Logcat?

Jalankan adb logcat -G 2M untuk meningkatkan buffer hingga 2 MB. Ukuran maksimum tergantung pada perangkat: di Android 10+ tersedia hingga 16 MB. Perubahan bertahan hingga perangkat di-restart. Untuk konfigurasi permanen, gunakan build.prop di device tree.

Mengapa Logcat tidak menampilkan log aplikasi?

Kemungkinan penyebab: aplikasi berjalan dalam mode Release (log Timber.v/d dinonaktifkan), filter Logcat menyembunyikan tingkat yang diperlukan, atau Anda terhubung ke perangkat yang salah. Periksa juga bahwa di Android Studio proses aplikasi dipilih, bukan system_process.

Bagaimana cara membaca log crash dari Logcat?

Temukan baris dengan FATAL EXCEPTION, di bawahnya terdapat stack trace lengkap. Baris pertama berisi jenis pengecualian dan pesan, baris berikutnya adalah rantai panggilan dengan menunjukkan file dan baris kode. Gunakan grep "FATAL EXCEPTION" untuk pencarian cepat di antara semua log.

Apa itu ANR dan bagaimana mendeteksinya di Logcat?

ANR (Application Not Responding) — situasi ketika utas utama (UI thread) diblokir lebih dari 5 detik. Di Logcat, ANR muncul sebagai pesan dengan tag ActivityManager dan teks "ANR in ..." dengan stack trace semua utas terlampir. Gunakan filter tag:ActivityManager level:ERROR.

Ringkasan

  • Logcat — buffer sistem Android, dapat diakses melalui ADB dan jendela bawaan Android Studio
  • Enam tingkat logging (VERBOSE — ASSERT) menentukan kepentingan dan ambang filter pesan
  • Tag memungkinkan pengelompokan pesan berdasarkan modul aplikasi untuk pemfilteran cepat
  • ADB logcat dengan grep/awk lebih fleksibel daripada antarmuka GUI dan cocok untuk pipeline CI/CD
  • Timber menyederhanakan logging, secara otomatis menetapkan tag, dan menonaktifkan tingkat Debug di Release
  • Log crash dengan Exception dan stack trace masuk ke Logcat secara otomatis saat terjadi kegagalan
  • Filter tersimpan di Android Studio mempercepat analisis log harian

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga