Logcat — ano ito, antas ng pag-log at paggamit ng mga log

May-akda: IT Sectr Nai-publish: 2026-05-06 Oras ng pagbabasa: 8 min

Logcat — ay ang Android SDK tool para sa pagtingin ng mga system message at log ng application sa real-time, naa-access sa pamamagitan ng ADB o built-in na console ng Android Studio. Ayon sa Android Developers, kinokolekta ng Logcat ang mga mensahe mula sa lahat ng proseso ng system, sinasala ang mga ito ayon sa antas ng kahalagahan at mga tag, at pinapayagan ang developer na mag-diagnose ng mga error, subaybayan ang pag-execute ng code, at suriin ang performance. Logcat — ang pangunahing mapagkukunan ng impormasyon kapag nagde-debug ng mga Android application.

Mga Pangunahing Punto

  • Logcat — console window sa Android Studio para sa pagtingin ng mga system log ng Android sa real-time
  • Antas ng log — VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT — tinutukoy ang kahalagahan ng mensahe at hangganan ng filter
  • Pag-filter ayon sa mga tag, antas, at keyword ay nagpapahintulot na ihiwalay ang mga log ng isang partikular na application mula sa pangkalahatang daloy
  • ADB logcat — command sa terminal para sa pag-access sa mga log nang walang Android Studio, sa pamamagitan ng USB o Wi-Fi
  • Crash log Exception na may stack trace ay awtomatikong pumapasok sa Logcat at naglalaman ng kumpletong diagnosis ng pag-crash

Ano ang Logcat sa Android

Logcat — ay isang system buffer ng Android kung saan ang lahat ng proseso (kabilang ang Linux kernel, system_server at mga application) ay nagsusulat ng mga mensahe sa isang tiyak na format. Ang tool na logcat, na bahagi ng Android SDK, ay nagbabasa ng buffer na ito at nagpapakita ng mga mensahe sa real-time. Simula sa Android 4.1 (API 16), ang pag-access sa Logcat ay limitado: ang mga application ay maaari lamang magbasa ng kanilang sariling mga log, at ang mga system log ay naa-access sa pamamagitan ng ADB na may debug access.

Bawat mensahe ng Logcat ay naglalaman ng limang field: petsa at oras, PID (identifier ng proseso), TID (identifier ng thread), antas ng pag-log, at tag. Ang format ay fixed at pareho para sa lahat ng bersyon ng Android. Ito ay nagpapahintulot sa paggamit ng grep, awk at sed utilities para sa pag-filter ng mga log sa CI/CD pipelines nang walang pag-asa sa IDE.

Ang mga log ay naka-store sa isang circular buffer na may fixed size: 256 KB para sa main, 256 KB para sa system, at 256 KB para sa events (Android 5+). Kapag napuno ang buffer, ang mga lumang mensahe ay tinatanggal. Maaaring baguhin ng developer ang laki ng buffer sa pamamagitan ng PROP logcat.size o sa mga setting ng developer ng device.

Antas ng log at tag: istraktura ng mensahe ng Logcat

Anim na antas ng pag-log ang tumutukoy sa kahalagahan ng mensahe. Gumagamit ang Android ng mga standard na antas na katulad ng iba pang platform, ngunit may sariling mga pangalan ng constant sa klase na Log. Ang pagpili ng tamang antas ay tumutulong sa epektibong pag-filter ng mga log at hindi paglubog ng mga kritikal na mensahe sa mga sekundaryo.

AntasConstantLayuninIpinapakita bilang default
VERBOSELog.vNapakadetalyadong impormasyon sa pag-debugHindi
DEBUGLog.dMga debug message para sa developerHindi
INFOLog.iMga impormasyong mensahe tungkol sa operasyon ng applicationOo
WARNLog.wMga babala tungkol sa mga potensyal na problemaOo
ERRORLog.eMga kritikal na error at exceptionOo
ASSERTLog.wtfMga error na hindi dapat mangyari sa prinsipyoOo

Mga tag: organisasyon ng mga mensahe ayon sa modyul

Tag — isang string hanggang 23 character na nagpapakilala sa pinagmulan ng mensahe. Inirerekomenda na gamitin ang pangalan ng klase o modyul bilang tag: MainActivity, AuthManager, NetworkModule. Ito ay nagpapahintulot sa pag-filter ng mga log ayon sa isang partikular na component ng application. Para sa pagkakapareho sa team, maaaring gumawa ng tag constants sa isang hiwalay na file o gamitin ang library na Timber na awtomatikong naglalagay ng tag batay sa pangalan ng klase.

Crash log at stack trace ng exception

Sa hindi nahawakang exception, ang Android mismo ay nagsusulat sa Logcat ng kumpletong stack trace na may indikasyon ng klase, method, linya ng code, at chain ng tawag. Ang crash log ay naglalaman ng uri ng exception (NullPointerException, RuntimeException), mensahe, at pagkakasunod-sunod ng mga tawag mula sa punto ng pag-crash hanggang sa entry point ng application. Para sa pagsusuri ng mga crash log mula sa mga device ng user, ginagamit ang Firebase Crashlytics na nagsi-sync ng stack trace sa obfuscation map (mapping.txt para sa Android).

Logcat sa Android Studio: interface, filter, at paghahanap

Android Studio ay nagbibigay ng graphical na interface ng Logcat, naa-access sa pamamagitan ng View → Tool Windows → Logcat (Alt + 6). Ang Logcat window ay nag-a-update sa real-time, nagpapakita ng lahat ng mensahe ng konektadong device, at nagpapahintulot sa pag-configure ng mga flexible na filter para ihiwalay ang kinakailangang impormasyon mula sa pangkalahatang daloy.

Pag-filter ayon sa antas at tag

Dropdown list Log Level ay nagsasala ng mga mensahe ayon sa minimum na antas: piliin ang WARN upang makita lamang ang mga babala at error, itinatago ang VERBOSE, DEBUG, at INFO. Ang field na Search ay nagpapahintulot sa paghahanap ayon sa teksto ng mensahe o tag — sumusuporta sa regex, na maginhawa para sa paghahanap ng mga mensahe ayon sa pattern.

Mga naka-save na filter

Saved Filters — isang malakas na feature ng Logcat sa Android Studio. Maaari kang lumikha ng filter na nagpapakita lamang ng mga mensahe na may tag ng iyong application (tag:MyApp) at antas na WARN+. Ang mga filter ay nai-save sa pagitan ng mga session at naa-access mula sa dropdown list. Para sa mga proyektong may maraming modyul, gumawa ng hiwalay na filter para sa bawat modyul.

text
# Halimbawang expression para sa pag-filter ng mga log ng application
tag:"MyApp" level:WARN # WARN+ lang para sa MyApp
package:"com.mycompany" # Lahat ng log ng package
-tag:"okhttp" # Ibukod ang mga log ng OkHttp

Pag-export at pagsusuri

Ang mga log ng Logcat ay maaaring i-export sa isang text file sa pamamagitan ng icon na Save to File. Ito ay kapaki-pakinabang para sa pag-attach sa mga ticket sa Jira o pagsusuri ng mahabang session. Ang na-export na log ay maaaring buksan sa anumang text editor at ilapat ang grep para sa paghahanap ng mga pattern. Para sa naka-format na view, gamitin ang utility na logcat-color.

ADB logcat: command sa terminal para sa advanced na trabaho

ADB logcat — console version ng Logcat, naa-access sa pamamagitan ng Android Debug Bridge. Ang pangunahing bentahe nito ay ang kakayahang tumakbo sa CI servers, sa automation scripts, at sa mga device na walang Android Studio. Sinusuportahan ng ADB logcat ang lahat ng parehong filter gaya ng GUI, ngunit may flexibility ng command line.

Mga pangunahing command

Ang command na adb logcat na walang argumento ay nagpapakita ng buong buffer sa real-time. Upang huminto, gamitin ang Ctrl+C. Ang flag na -c ay nag-clear ng buffer bago magsimula ng recording — ito ay maginhawa kapag kailangan mong ihiwalay ang mga log ng kasalukuyang test mula sa mga nakaraang mensahe. Ang flag na -b ay pumipili ng uri ng buffer: main, system, events, crash (Android 12+).

bash
# I-clear ang buffer at simulan ang pag-record ng log na may tag na MyApp
adb logcat -c
adb logcat MyApp:D *:S

# I-save ang mga log sa file
adb logcat -d > logcat_dump.txt

# Pag-filter ayon sa PID ng proseso
adb logcat --pid=12345

Pag-filter gamit ang grep at awk

Ang kumbinasyon ng ADB sa unix utilities ay nagbibigay ng maximum na flexibility. Halimbawa, ang filter na "*:S TAG:D" ay nagpapakita lamang ng mga mensahe na may tag na TAG ng antas na DEBUG at mas mataas, itinatago ang lahat ng iba. Upang makita lamang ang Exception, gamitin ang grep -i exception. Para sa pagsusuri ng dalas ng error, ilapat ang sort | uniq -c sa column ng tag.

Logcat sa CI/CD

Sa CI servers, ginagamit ang Logcat para sa pagtitipon ng diagnostics habang tumatakbo ang UI tests. Karaniwang pipeline: bago simulan ang mga test, ang buffer ay nililinis; pagkatapos ng execution ng mga test, ang dump ng mga log ay nai-save bilang build artifact. Kung ang test ay nabigo, batay sa mga log ay maaaring matukoy kung ang kabiguan ay sanhi ng ANR, hindi nahawakang exception, o network timeout.

Pag-log sa code: Log.d, Log.e at Timber

Ang klase na android.util.Log — built-in na API para sa pagsusulat ng mga mensahe sa Logcat. Ang Log.v, Log.d, Log.i, Log.w, Log.e at Log.wtf ay tumatanggap ng tag (string) at mensahe (string) o mensahe + Throwable. Para sa pag-format ng mga mensahe, gamitin ang String.format o Kotlin String templates — iwasan ang concatenation ng string na lumilikha ng karagdagang object sa heap.

Ang library na Timber

Timber — sikat na library ni Jake Wharton na nag-aalis ng mga kakulangan ng built-in na Log API. Awtomatikong naglalagay ang Timber ng tag batay sa pangalan ng klase na tumawag sa pag-log at hindi nangangailangan ng pagpapasa ng tag sa bawat tawag. Sinusuportahan din ng Timber ang conditional logging: sa Release build, ang mga tawag na Timber.v at Timber.d ay maaaring i-disable ng isang linya sa Application.onCreate.

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

        // Built-in na Log API
        Log.d("MainActivity", "onCreate called")

        // Timber — awtomatikong tag batay sa pangalan ng klase
        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")
        }
    }
}

Conditional logging para sa Release

Sa Release build, inirerekomenda na i-disable ang VERBOSE at DEBUG log upang mabawasan ang load sa Logcat buffer at maiwasan ang pagtagas ng sensitibong impormasyon. Nilulutas ng Timber ang gawaing ito sa pamamagitan ng PlantingTree: sa Debug flavor ay itinanim ang DebugTree (nagla-log ng lahat), sa Release — CrashReportingTree (nagla-log lamang ng ERROR sa pamamagitan ng Crashlytics). Ang built-in na Log API ay hindi sumusuporta sa conditional logging — ang developer ay kailangang balutin ang bawat tawag sa if (BuildConfig.DEBUG).

Mga Madalas Itanong

Paano linisin ang Logcat buffer bago magpatakbo ng test?

Gamitin ang command na adb logcat -c bago patakbuhin ang test. Bilang alternatibo sa Android Studio, pindutin ang Clear Logcat button (basurahan) sa Logcat window. Ang paglilinis ay hindi nakakaapekto sa system buffers ng ibang proseso, sa kasalukuyang koneksyon lamang.

Paano dagdagan ang laki ng Logcat buffer?

Isagawa ang adb logcat -G 2M upang dagdagan ang buffer sa 2 MB. Ang maximum na laki ay depende sa device: sa Android 10+ ay available hanggang 16 MB. Ang pagbabago ay nananatili hanggang sa i-restart ang device. Para sa permanenteng configuration, gamitin ang build.prop sa device tree.

Bakit hindi nagpapakita ang Logcat ng mga log ng application?

Mga posibleng dahilan: ang application ay tumatakbo sa Release mode (ang Timber.v/d log ay naka-disable), ang Logcat filter ay nagtatago ng kinakailangang antas, o ikaw ay konektado sa maling device. Suriin din na sa Android Studio ay napili ang proseso ng application, hindi ang system_process.

Paano basahin ang mga crash log mula sa Logcat?

Hanapin ang linya na may FATAL EXCEPTION, kung saan sa ilalim ay may kumpletong stack trace. Ang unang linya ay naglalaman ng uri ng exception at mensahe, ang mga sumusunod na linya ay ang chain ng tawag na may indikasyon ng file at linya ng code. Gamitin ang grep "FATAL EXCEPTION" para sa mabilis na paghahanap sa lahat ng log.

Ano ang ANR at paano ito matukoy sa Logcat?

ANR (Application Not Responding) — sitwasyon kung saan ang pangunahing thread (UI thread) ay naka-block nang higit sa 5 segundo. Sa Logcat, ang ANR ay lumilitaw bilang isang mensahe na may tag na ActivityManager at tekstong "ANR in ..." na may kalakip na stack trace ng lahat ng thread. Gamitin ang filter na tag:ActivityManager level:ERROR.

Buod

  • Logcat — system buffer ng Android, naa-access sa pamamagitan ng ADB at built-in na window ng Android Studio
  • Anim na antas ng pag-log (VERBOSE — ASSERT) ang tumutukoy sa kahalagahan at hangganan ng filter ng mga mensahe
  • Mga tag ay nagpapahintulot sa pagpapangkat ng mga mensahe ayon sa modyul ng application para sa mabilis na pag-filter
  • ADB logcat na may grep/awk ay mas flexible kaysa sa GUI interface at angkop para sa CI/CD pipelines
  • Timber ay nagpapasimple ng pag-log, awtomatikong naglalagay ng mga tag, at nagdi-disable ng Debug antas sa Release
  • Crash log na may Exception at stack trace ay awtomatikong pumapasok sa Logcat sa bawat pag-crash
  • Naka-save na filter sa Android Studio ay nagpapabilis ng araw-araw na pagsusuri ng log

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din