Înregistrarea și monitorizarea sunt doi piloni ai stabilității aplicațiilor mobile. Potrivit Gartner (2025), piața soluțiilor APM va ajunge la 8 miliarde de dolari până în 2027. Înregistrarea corectă permite nu doar găsirea erorilor, ci și prezicerea problemelor înainte ca acestea să afecteze utilizatorii.
Puncte cheie
Înregistrarea aplicațiilor mobile pe iOS se bazează pe os_log — sistemul integrat Apple, disponibil din iOS 10. os_log scrie logurile într-un singur jurnal de sistem (pe dispozitiv sau prin Console.app), suportă categorii, niveluri și etichete de confidențialitate. Combinația de înregistrare și monitorizare pe iOS prin Console.app și xcrun permite urmărirea erorilor și performanței în timp real.
os_log are niveluri: Default, Info, Debug, Error, Fault. În producție se păstrează Error și Fault — Debug și Info sunt dezactivate. Alegerea nivelului corect face parte din strategia de monitorizare a aplicațiilor mobile pe iOS. Confidențialitate: %{public}@ pentru date neprotejate, %{private}@ pentru date personale.
CocoaLumberjack este o bibliotecă populară pentru înregistrarea pe iOS. Spre deosebire de os_log, suportă formate personalizate, scriere asincronă și rotație a logurilor. DDLog, DDTTYLogger (consolă), DDFileLogger (fișier cu rotație). Pentru monitorizare la distanță, CocoaLumberjack poate fi combinat cu os_log — scrieți într-un fișier pentru înregistrare la distanță și în os_log pentru Console.app.
Pentru înregistrarea aplicațiilor mobile pe Android se folosește Timber — o bibliotecă de Jake Wharton care a devenit standardul platformei. Timber este un înveliș peste Android Log (Logcat) care adaugă automat eticheta clasei și configurează Tree. Timber face parte din sistemul de monitorizare a aplicațiilor mobile Android: DebugTree pentru depanare, CrashlyticsTree pentru trimiterea datelor.
Timber folosește Tree — o componentă care decide ce să facă cu logul. În build-urile de depanare, DebugTree (ieșire către Logcat), în release — CrashlyticsTree (trimiterea crash-urilor). Timber.wtf() înregistrează erori fatale. Timber.tag("CustomTag") suprascrie eticheta. Pentru monitorizare eficientă, Timber este combinat cu instrumente APM.
Android Log are niveluri: VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT. ProGuard/R8 elimină Log.d și Log.v în release — Timber permite înregistrarea prin Plant. Alegerea nivelului afectează calitatea monitorizării aplicației mobile — în producție se păstrează WARN și ERROR.
| Instrument | Platformă | Format | Rotație | Distant | Complexitate |
|---|---|---|---|---|---|
| os_log | iOS | Structurat | Sistem | Console.app | Scăzută |
| CocoaLumberjack | iOS | Text/JSON | DDFileLogger | Da (personalizat) | Medie |
| Timber | Android | Text | Logcat/Personalizat | Tree | Scăzută |
| Sentry | iOS/Android | JSON | Server | Da | Medie |
| Logcat | Android | Text | Buffer | ADB | Scăzută |
Când alegeți un instrument de înregistrare, luați în considerare: aveți nevoie de înregistrare la distanță, cât de des se schimbă logurile și cine le va analiza. Pentru startup-uri, os_log sau Timber sunt suficiente. Pentru întreprinderi — CocoaLumberjack cu trimitere la server. La IT Sectr, folosim combinația Timber + Crashlytics pentru Android și os_log + CocoaLumberjack pentru iOS.
Structured logging — scrierea logurilor în format JSON în loc de text simplu. Exemplu: în loc de "User login failed" scriem {"event": "login_failed", "user_id": 123, "reason": "invalid_password"}. Aceasta este baza pentru monitorizarea automată — stiva ELK și Grafana filtrează, agregă și analizează astfel de date.
Filtrare după câmpuri: găsiți toate logurile cu event=crash din ultima oră. Agregare: construiți un grafic al numărului de erori pe versiunea aplicației. Integrare cu ELK (Elasticsearch, Logstash, Kibana) sau Grafana. Structured logging nu este obligatoriu pentru primele lansări, dar devine critic când DAU depășește 10.000.
Înregistrarea la distanță — trimiterea logurilor de pe dispozitiv pe un server pentru monitorizare centralizată. Implementată prin Tree personalizat (Android) sau cereri HTTP. Trimiteți doar Error și Warning — nu risipiți traficul utilizatorului. Rotația logurilor: DDFileLogger (iOS) la fiecare 1 MB sau 1 zi. Pe Android, bufferul Logcat este limitat.
Application Performance Monitoring (APM) — o clasă de instrumente pentru monitorizarea aplicațiilor mobile. APM măsoară: timpul de pornire, cererile de rețea, FPS, utilizarea memoriei, frecvența crash-urilor. Principalii jucători: Sentry (Performance), New Relic Mobile, Datadog Mobile.
Sentry — nu doar raportare de crash-uri, ci și monitorizare a performanței. Sentry Performance creează trace-uri distribuite care arată cât timp a durat fiecare etapă: de la apăsarea butonului până la răspunsul serverului. Suportă iOS, Android, Flutter, React Native. Gratuit până la 5k de evenimente pe lună.
New Relic Mobile oferă metrici: numărul de sesiuni, timpul în aplicație, frecvența crash-urilor, cererile de rețea. Datadog Mobile este un instrument mai modern cu tablouri de bord în timp real și alerte. Ambele sunt cu plată, dar au niveluri gratuite. IT Sectr recomandă să începeți cu Firebase Performance și să treceți la APM cu plată când DAU depășește 100.000.
Firebase Performance — un instrument gratuit de monitorizare a aplicațiilor mobile de la Google. Colectează automat metrici: timpul de pornire a aplicației, cererile HTTP (URL, metodă, cod de răspuns), FPS. Pentru urmărire personalizată, utilizați Trace API. Integrare: adăugați SDK-ul în build.gradle (Android) sau Podfile (iOS).
Trace — un segment de timp cu început și sfârșit pe care îl măsurați. Exemplu: trace = FirebasePerformance.getInstance().newTrace("checkout_process"). Metrici — indicatori numerici (dimensiunea răspunsului, numărul de elemente). Firebase Performance nu necesită infrastructură de server — toate datele trec prin Firebase SDK. Când monitorizați aplicații mobile, Trace API oferă context pentru analiza performanței.
Întrebări frecvente
Niveluri standard: ERROR (erori critice), WARN (probleme potențiale), INFO (evenimente cheie), DEBUG (depanare), VERBOSE (urmărire detaliată). În producție se păstrează ERROR, WARN și INFO, restul sunt dezactivate.
Timber este o bibliotecă-înveliș peste Logcat de Jake Wharton pentru înregistrarea aplicațiilor mobile pe Android. Inserează automat eticheta clasei, configurează Tree și dezactivează logurile în producție cu o singură linie de cod.
APM (Application Performance Monitoring) — o clasă de instrumente pentru urmărirea performanței: timpul de pornire, cererile de rețea, utilizarea memoriei, frecvența crash-urilor. Când monitorizați aplicații mobile, New Relic, Datadog și Firebase Performance ajută la găsirea blocajelor înainte de plângerile utilizatorilor.
Pentru un startup, Firebase Performance este suficient — un instrument gratuit de monitorizare a aplicațiilor mobile. New Relic și Datadog se conectează când este nevoie de urmărire detaliată și tablouri de bord personalizate. IT Sectr recomandă să începeți cu Firebase și să treceți la soluții cu plată când DAU depășește 100.000.
Structured logging este un format de loguri în JSON sau cheie-valoare în loc de text simplu. Permite filtrarea logurilor după câmpuri, construirea de grafice și analiza automată în ELK sau Grafana. Fără loguri structurate, este dificil să găsiți modele în mii de înregistrări.
Rezumat
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.