A naplózás és monitorozás a mobilalkalmazás stabilitásának két pillére. A Gartner (2025) szerint az APM-megoldások piaca 2027-re eléri a 8 milliárd dollárt. A megfelelő naplózás nemcsak a hibák megtalálását teszi lehetővé, hanem a problémák előrejelzését is, mielőtt azok a felhasználókat érintenék.
Főbb pontok
A mobilalkalmazások naplózása iOS-en az os_log-ra épül — az Apple beépített rendszerére, amely iOS 10 óta elérhető. Az os_log egyetlen rendszernaplóba ír (a készüléken vagy a Console.app-on keresztül), támogatja a kategóriákat, szinteket és adatvédelmi címkéket. A naplózás és monitorozás kombinációja iOS-en a Console.app-on és xcrun-on keresztül lehetővé teszi a hibák és a teljesítmény valós idejű nyomon követését.
Az os_log szintekkel rendelkezik: Default, Info, Debug, Error, Fault. Éles üzemben az Error és Fault marad — a Debug és Info kikapcsolásra kerül. A megfelelő szint kiválasztása a mobilalkalmazások monitorozási stratégiájának része iOS-en. Adatvédelem: %{public}@ a nem védett adatokhoz, %{private}@ a személyes adatokhoz.
CocoaLumberjack egy népszerű könyvtár az iOS naplózáshoz. Az os_log-gal ellentétben támogatja az egyéni formátumokat, az aszinkron írást és a naplórotációt. DDLog, DDTTYLogger (konzol), DDFileLogger (fájl rotációval). Távoli monitorozáshoz a CocoaLumberjack kombinálható az os_log-gal — írjon fájlba a távoli naplózáshoz és az os_log-ba a Console.app számára.
A mobilalkalmazások naplózásához Androidon a Timber-t használják — Jake Wharton könyvtárát, amely a platform szabványává vált. A Timber egy wrapper az Android Log (Logcat) körül, amely automatikusan hozzáadja az osztálycímkét és konfigurálja a Tree-t. A Timber része az Android mobilalkalmazás-monitorozó rendszerének: DebugTree a hibakereséshez, CrashlyticsTree az adatok küldéséhez.
A Timber a Tree komponenst használja, amely eldönti, mi történjen a naplóval. Hibakereső build-ekben DebugTree (kimenet a Logcat-be), release-ben — CrashlyticsTree (összeomlások küldése). Timber.wtf() naplózza a végzetes hibákat. Timber.tag("CustomTag") felülírja a címkét. A hatékony monitorozás érdekében a Timber-t APM-eszközökkel kombinálják.
Android Log szintekkel rendelkezik: VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT. A ProGuard/R8 eltávolítja a Log.d és Log.v elemeket release-ben — a Timber lehetővé teszi a naplózást a Plant-en keresztül. A szintválasztás befolyásolja a mobilalkalmazás-monitorozás minőségét — éles üzemben a WARN és ERROR marad.
| Eszköz | Platform | Formátum | Rotáció | Távoli | Bonyolultság |
|---|---|---|---|---|---|
| os_log | iOS | Strukturált | Rendszer | Console.app | Alacsony |
| CocoaLumberjack | iOS | Szöveg/JSON | DDFileLogger | Igen (egyéni) | Közepes |
| Timber | Android | Szöveg | Logcat/Egyéni | Tree | Alacsony |
| Sentry | iOS/Android | JSON | Szerver | Igen | Közepes |
| Logcat | Android | Szöveg | Buffer | ADB | Alacsony |
A naplózási eszköz kiválasztásakor vegye figyelembe: szükséges-e távoli naplózás, milyen gyakran változnak a naplók és ki elemzi azokat. Induló vállalkozások számára elegendő az os_log vagy a Timber. Vállalati szinten — CocoaLumberjack szerverre küldéssel. Az IT Sectr-nél a Timber + Crashlytics kombinációt használjuk Androidhoz és az os_log + CocoaLumberjack kombinációt iOS-hez.
Structured logging — naplók írása JSON formátumban egyszerű szöveg helyett. Példa: a "User login failed" helyett ezt írjuk: {"event": "login_failed", "user_id": 123, "reason": "invalid_password"}. Ez az automatikus monitorozás alapja — az ELK-verem és a Grafana szűri, összesíti és elemzi az ilyen adatokat.
Szűrés mezők szerint: keresse meg az összes naplót event=crash értékkel az elmúlt órában. Összesítés: készítsen grafikont a hibák számáról alkalmazásverziók szerint. Integráció az ELK-vel (Elasticsearch, Logstash, Kibana) vagy a Grafana-val. A structured logging nem kötelező az első kiadásokhoz, de kritikussá válik, amikor a DAU meghaladja a 10 000-et.
Távoli naplózás — naplók küldése a készülékről egy szerverre központosított monitorozás céljából. Egyéni Tree (Android) vagy HTTP-kérések segítségével valósítható meg. Csak Error és Warning értékeket küldjön — ne pazarolja a felhasználó adatforgalmát. Naplórotáció: DDFileLogger (iOS) 1 MB-onként vagy 1 naponta. Androidon a Logcat puffer korlátozott.
Application Performance Monitoring (APM) — egy eszközosztály a mobilalkalmazások monitorozásához. Az APM méri: indítási idő, hálózati kérések, FPS, memóriahasználat, összeomlások gyakorisága. Főbb szereplők: Sentry (Performance), New Relic Mobile, Datadog Mobile.
Sentry — nem csak összeomlás-jelentés, hanem teljesítményfigyelés is. A Sentry Performance elosztott nyomok (trace) létrehozásával mutatja, mennyi ideig tartott az egyes fázisok: a gombnyomástól a szerver válaszáig. Támogatja az iOS, Android, Flutter, React Native rendszereket. Ingyenes havonta 5 ezer eseményig.
New Relic Mobile metrikákat ad: munkamenetek száma, alkalmazásban töltött idő, összeomlások gyakorisága, hálózati kérések. Datadog Mobile — egy modernebb eszköz valós idejű irányítópultokkal és riasztásokkal. Mindkettő fizetős, de ingyenes szintekkel rendelkezik. Az IT Sectr javasolja a Firebase Performance-szel való kezdést és a fizetős APM-re való áttérést, amikor a DAU meghaladja a 100 000-et.
Firebase Performance — egy ingyenes mobilalkalmazás-monitorozó eszköz a Google-tól. Automatikusan gyűjti a metrikákat: alkalmazás indítási ideje, HTTP-kérések (URL, metódus, válaszkód), FPS. Egyéni nyomkövetéshez használja a Trace API-t. Integráció: adja hozzá az SDK-t a build.gradle (Android) vagy Podfile (iOS) fájlhoz.
Trace — egy időszegmens kezdéssel és véggel, amelyet megmér. Példa: trace = FirebasePerformance.getInstance().newTrace("checkout_process"). Metrikák — numerikus mutatók (válasz mérete, elemek száma). A Firebase Performance nem igényel szerverinfrastruktúrát — minden adat a Firebase SDK-n keresztül halad. Mobilalkalmazások monitorozásakor a Trace API kontextust biztosít a teljesítményelemzéshez.
Gyakran Ismételt Kérdések
Szabványos szintek: ERROR (kritikus hibák), WARN (potenciális problémák), INFO (kulcsfontosságú események), DEBUG (hibakeresés), VERBOSE (részletes nyomkövetés). Éles üzemben az ERROR, WARN és INFO marad, a többi kikapcsolásra kerül.
Timber egy wrapper könyvtár a Logcat körül Jake Whartontól a mobilalkalmazások naplózásához Androidon. Automatikusan beszúrja az osztálycímkét, konfigurálja a Tree-t, és egyetlen kódsorral kikapcsolja a naplókat éles üzemben.
APM (Application Performance Monitoring) — egy eszközosztály a teljesítmény nyomon követésére: indítási idő, hálózati kérések, memóriahasználat, összeomlások gyakorisága. Mobilalkalmazások monitorozásakor a New Relic, a Datadog és a Firebase Performance segít megtalálni a szűk keresztmetszeteket a felhasználói panaszok előtt.
Egy startup számára elegendő a Firebase Performance — egy ingyenes mobilalkalmazás-monitorozó eszköz. A New Relic és a Datadog akkor csatlakozik, amikor részletes nyomkövetésre és egyéni irányítópultokra van szükség. Az IT Sectr javasolja a Firebase-szel való kezdést és a fizetős megoldásokra való áttérést, amikor a DAU meghaladja a 100 000-et.
A structured logging egy naplóformátum JSON-ban vagy kulcs-érték párban az egyszerű szöveg helyett. Lehetővé teszi a naplók mezők szerinti szűrését, grafikonok készítését és automatikus elemzést az ELK-ben vagy a Grafana-ban. Strukturált naplók nélkül nehéz mintákat találni több ezer rekordban.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.