Logcat — шта је то, нивои логовања и рад са логовима

Аутор: IT Sectr Објављено: 2026-05-06 Време читања: 8 мин

Logcat — је алатка Android SDK-а за преглед системских порука и логова апликација у реалном времену, доступна путем ADB-а или уграђене конзоле Android Studio. Према Android Developers, Logcat прикупља поруке од свих процеса система, филтрира их по нивоима важности и ознакама и омогућава програмеру да дијагностикује грешке, прати извршавање кода и анализира перформансе. Logcat — главни извор информација при отклањању грешака у Android апликацијама.

Главно

  • Logcat — конзолни прозор у Android Studio за преглед системских логова Android-а у реалном времену
  • Нивои логова — VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT — одређују важност поруке и праг филтрирања
  • Филтрирање по ознакама, нивоима и кључним речима омогућава издвајање логова одређене апликације из општег тока
  • ADB logcat — команда терминала за приступ логовима без Android Studio, преко USB-а или Wi-Fi-ја
  • Crash логови Exception са stack trace-ом аутоматски доспевају у Logcat и садрже потпуну дијагностику пада

Шта је Logcat у Android-у

Logcat — системски бафер Android-а у који сви процеси (укључујући Linux кернел, system_server и апликације) уписују поруке одређеног формата. Алатка logcat, која је део Android SDK-а, чита овај бафер и приказује поруке у реалном времену. Почевши од Android 4.1 (API 16), приступ Logcat-у је ограничен: апликације могу читати само своје логове, а системски логови су доступни путем ADB-а са debug приступом.

Свака Logcat порука садржи пет поља: датум и време, PID (идентификатор процеса), TID (идентификатор нити), ниво логовања и ознаку. Формат је фиксан и исти за све верзије Android-а. Ово омогућава коришћење алата grep, awk и sed за филтрирање логова у CI/CD цевоводима без везивања за IDE.

Логови се чувају у кружном баферу фиксне величине: 256 KB за main, 256 KB за system и 256 KB за events (Android 5+). Када се бафер напуни, старе поруке се бришу. Програмер може променити величину бафера преко PROP logcat.size или у подешавањима за програмере уређаја.

Нивои логова и ознаке: структура Logcat поруке

Шест нивоа логовања одређује важност поруке. Android користи стандардне нивое сличне другим платформама, али са сопственим називима константи у класи Log. Одабир правог нивоа помаже у ефикасном филтрирању логова и не заглушује критичне поруке споредним.

НивоКонстантаНаменаПриказује се подразумевано
VERBOSELog.vМаксимално детаљне debug информацијеНе
DEBUGLog.dDebug поруке за програмераНе
INFOLog.iИнформативне поруке о раду апликацијеДа
WARNLog.wУпозорења о потенцијалним проблемимаДа
ERRORLog.eКритичне грешке и изузециДа
ASSERTLog.wtfГрешке које у принципу не би требало да се десеДа

Ознаке: организација порука по модулима

Ознака (tag) — низ до 23 знака који идентификује извор поруке. Препоручује се коришћење имена класе или модула као ознаке: MainActivity, AuthManager, NetworkModule. Ово омогућава филтрирање логова по одређеној компоненти апликације. За једнообразност у тиму могу се креирати константе ознака у посебном фајлу или користити библиотека Timber која аутоматски поставља ознаку према имену класе.

Crash логови и stack trace изузетака

При необрађеном изузетку, Android сам уписује у Logcat комплетан stack trace са навођењем класе, метода, линије кода и ланца позива. Crash лог садржи тип изузетка (NullPointerException, RuntimeException), поруку и след позива од тачке пада до улазне тачке апликације. За анализу crash логова са уређаја корисника користи се Firebase Crashlytics, који синхронизује stack trace са мапом обфускације (mapping.txt за Android).

Logcat у Android Studio: интерфејс, филтери и претрага

Android Studio пружа графички интерфејс Logcat, доступан кроз View → Tool Windows → Logcat (Alt + 6). Прозор Logcat се ажурира у реалном времену, приказује све поруке повезаног уређаја и омогућава подешавање флексибилних филтера за издвајање потребних информација из општег тока.

Филтрирање по нивоу и ознаци

Падајућа листа Log Level филтрира поруке по минималном нивоу: изаберите WARN да бисте видели само упозорења и грешке, сакривајући VERBOSE, DEBUG и INFO. Поље Search омогућава претрагу по тексту поруке или ознаци — подржава regex, што је згодно за претрагу порука по шаблону.

Сачувани филтери

Saved Filters — моћна функција Logcat-а у Android Studio. Можете креирати филтер који приказује само поруке са ознаком ваше апликације (tag:MyApp) и нивоом WARN+. Филтери се чувају између сесија и доступни су из падајуће листе. За пројекте са више модула, креирајте посебан филтер за сваки модул.

text
# Пример израза за филтрирање логова апликације
tag:"MyApp" level:WARN # Только WARN+ для MyApp
package:"com.mycompany" # Все логи пакета
-tag:"okhttp" # Исключить логи OkHttp

Извоз и анализа

Logcat логови се могу извести у текстуалну датотеку преко иконе Save to File. Ово је корисно за прилагање тикетима у Jira-и или анализу дугих сесија. Извезени лог се може отворити у било ком уређивачу текста и применити grep за тражење шаблона. За форматирани приказ користите алат logcat-color.

ADB logcat: команде терминала за напредни рад

ADB logcat — конзолна верзија Logcat-а, доступна преко Android Debug Bridge-а. Њена главна предност је могућност покретања на CI серверима, у скриптама аутоматизације и на уређајима без Android Studio. ADB logcat подржава све исте филтере као и GUI, али са флексибилношћу командне линије.

Основне команде

Команда adb logcat без аргумената приказује цео бафер у реалном времену. За заустављање користите Ctrl+C. Застава -c чисти бафер пре почетка снимања — ово је згодно када треба изоловати логове тренутног теста од претходних порука. Застава -b бира тип бафера: main, system, events, crash (Android 12+).

bash
# Очисти бафер и започни снимање логова са ознаком MyApp
adb logcat -c
adb logcat MyApp:D *:S

# Сачувај логове у датотеку
adb logcat -d > logcat_dump.txt

# Филтрирање по PID-у процеса
adb logcat --pid=12345

Филтрирање помоћу grep и awk

Комбинација ADB-а са unix алатима даје максималну флексибилност. На пример, филтер "*:S TAG:D" приказује само поруке са ознаком TAG нивоа DEBUG и више, сакривајући све остале. За преглед само Exception-а користите grep -i exception. За анализу учесталости грешака примените sort | uniq -c на колони ознаке.

Logcat у CI/CD

На CI серверима Logcat се користи за прикупљање дијагностике при покретању UI тестова. Типичан цевовод: пре покретања тестова бафер се чисти, након извршења тестова — дамп логова се чува као артефакт изградње. Ако тест није успео, на основу логова се може утврдити да ли је пад проузрокован ANR-ом, необрађеним изузетком или мрежним timeout-ом.

Логовање у коду: Log.d, Log.e и Timber

Класа android.util.Log — уграђени API за упис порука у Logcat. Log.v, Log.d, Log.i, Log.w, Log.e и Log.wtf примају ознаку (низ) и поруку (низ) или поруку + Throwable. За форматирање порука користите String.format или Kotlin String templates — избегавајте конкатенацију низова која ствара додатне објекте на heap-у.

Библиотека Timber

Timber — популарна библиотека Џејка Вортона која отклања недостатке уграђеног Log API-ја. Timber аутоматски поставља ознаку према имену класе која је позвала логовање и не захтева прослеђивање ознаке у сваком позиву. Timber такође подржава условно логовање: у Release верзији позиви Timber.v и Timber.d могу се искључити једним редом у Application.onCreate.

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

        // Уграђени Log API
        Log.d("MainActivity", "onCreate called")

        // Timber — аутоматска ознака према имену класе
        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")
        }
    }
}

Условно логовање за Release

У Release верзији препоручује се искључивање VERBOSE и DEBUG логова како би се смањило оптерећење Logcat бафера и искључило цурење осетљивих информација. Timber решава овај задатак путем PlantingTree: у Debug флејвору се сади DebugTree (логује све), у Release — CrashReportingTree (логује само ERROR преко Crashlytics-а). Уграђени Log API не подржава условно логовање — програмер мора да обавије сваки позив у if (BuildConfig.DEBUG).

Често постављана питања

Како очистити Logcat бафер пре покретања теста?

Користите команду adb logcat -c пре покретања теста. Алтернативно у Android Studio притисните дугме Clear Logcat (корпа за отпатке) у прозору Logcat. Чишћење не утиче на системске бафере других процеса, само на тренутну везу.

Како повећати величину Logcat бафера?

Извршите adb logcat -G 2M да повећате бафер на 2 MB. Максимална величина зависи од уређаја: на Android 10+ доступно је до 16 MB. Промена се чува до поновног покретања уређаја. За стално подешавање користите build.prop у device tree.

Зашто Logcat не приказује логове апликације?

Могући разлози: апликација ради у Release режиму (Timber.v/d логови су искључени), Logcat филтер скрива потребан ниво или сте повезани на погрешан уређај. Такође проверите да је у Android Studio изабран процес апликације, а не system_process.

Како читати crash логове из Logcat-а?

Пронађите ред са FATAL EXCEPTION, испод којег иде комплетан stack trace. Први ред садржи тип изузетка и поруку, наредни редови — ланац позива са навођењем фајла и линије кода. Користите grep "FATAL EXCEPTION" за брзу претрагу међу свим логовима.

Шта је ANR и како га открити у Logcat-у?

ANR (Application Not Responding) — ситуација када је главна нит (UI thread) блокирана дуже од 5 секунди. У Logcat-у ANR изгледа као порука са ознаком ActivityManager и текстом "ANR in ..." са приложеним stack trace-ом свих нити. Користите филтер tag:ActivityManager level:ERROR.

Резиме

  • Logcat — системски бафер Android-а, доступан преко ADB-а и уграђеног прозора Android Studio
  • Шест нивоа логовања (VERBOSE — ASSERT) одређује важност и праг филтрирања порука
  • Ознаке омогућавају груписање порука по модулима апликације за брзо филтрирање
  • ADB logcat са grep/awk је флексибилнији од GUI интерфејса и погодан за CI/CD цевоводе
  • Timber поједностављује логовање, аутоматски поставља ознаке и искључује Debug нивое у Release-у
  • Crash логови са Exception и stack trace-ом аутоматски доспевају у Logcat при сваком паду
  • Сачувани филтери у Android Studio убрзавају свакодневну анализу логова

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође