Логирането и мониторингът са два стълба на стабилността на мобилното приложение. Според Gartner (2025), пазарът на APM решения ще достигне $8 млрд до 2027 г. Правилното логиране позволява не само намиране на грешки, но и предвиждане на проблеми, преди да засегнат потребителите.
Основни точки
Логирането на мобилни приложения на iOS се основава на os_log — вградената система на Apple, достъпна от iOS 10. os_log записва логове в единен системен лог (на устройството или чрез Console.app), поддържа категории, нива и маркери за поверителност. Комбинацията от логиране и мониторинг на iOS чрез Console.app и xcrun позволява проследяване на грешки и производителност в реално време.
os_log има нива: Default, Info, Debug, Error, Fault. В продукция се запазват Error и Fault — Debug и Info се изключват. Изборът на правилното ниво е част от стратегията за мониторинг на мобилни приложения на iOS. Поверителност: %{public}@ за незащитени данни, %{private}@ за лични данни.
CocoaLumberjack е популярна библиотека за iOS логиране. За разлика от os_log, тя поддържа персонализирани формати, асинхронен запис и ротация на логове. DDLog, DDTTYLogger (конзола), DDFileLogger (файл с ротация). За отдалечен мониторинг CocoaLumberjack може да се комбинира с os_log — пишете във файл за отдалечено логиране и в os_log за Console.app.
За логиране на мобилни приложения на Android се използва Timber — библиотека от Jake Wharton, която се превърна в стандарт за платформата. Timber е обвивка над Android Log (Logcat), която автоматично добавя маркера на класа и конфигурира Tree. Timber е част от системата за мониторинг на мобилни приложения на Android: DebugTree за отстраняване на грешки, CrashlyticsTree за изпращане на данни.
Timber използва Tree — компонент, който решава какво да прави с лога. В debug компилации DebugTree (изход към Logcat), в release — CrashlyticsTree (изпращане на сривове). Timber.wtf() регистрира фатални грешки. Timber.tag("CustomTag") заменя маркера. За ефективен мониторинг Timber се комбинира с APM инструменти.
Android Log има нива: VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT. ProGuard/R8 премахва Log.d и Log.v в release — Timber позволява логиране чрез Plant. Изборът на ниво влияе върху качеството на мониторинга на мобилното приложение — в продукция се запазват WARN и ERROR.
| Инструмент | Платформа | Формат | Ротация | Отдалечен | Сложност |
|---|---|---|---|---|---|
| os_log | iOS | Структуриран | Системна | Console.app | Ниска |
| CocoaLumberjack | iOS | Текст/JSON | DDFileLogger | Да (персонализиран) | Средна |
| Timber | Android | Текст | Logcat/Персонализиран | Tree | Ниска |
| Sentry | iOS/Android | JSON | Сървърна | Да | Средна |
| Logcat | Android | Текст | Буфер | ADB | Ниска |
При избора на инструмент за логиране вземете предвид: нуждаете ли се от отдалечено логиране, колко често се променят логовете и кой ще ги анализира. За стартиращи фирми са достатъчни os_log или Timber. За предприятия — CocoaLumberjack с изпращане до сървър. В IT Sectr използваме комбинацията Timber + Crashlytics за Android и os_log + CocoaLumberjack за iOS.
Структурирано логиране — запис на логове в JSON формат вместо plain text. Пример: вместо "User login failed" пишем {"event": "login_failed", "user_id": 123, "reason": "invalid_password"}. Това е основата за автоматичен мониторинг — ELK стекът и Grafana филтрират, агрегират и анализират такива данни.
Филтриране по полета: намерете всички логове с event=crash от последния час. Агрегация: изградете графика на броя грешки по версия на приложението. Интеграция с ELK (Elasticsearch, Logstash, Kibana) или Grafana. Структурираното логиране не е задължително за първите издания, но става критично, когато DAU надхвърли 10 000.
Отдалечено логиране — изпращане на логове от устройството до сървър за централизиран мониторинг. Реализира се чрез персонализиран Tree (Android) или HTTP заявки. Изпращайте само Error и Warning — не хабете трафика на потребителя. Ротация на логове: DDFileLogger (iOS) на всеки 1 MB или 1 ден. На Android буферът на Logcat е ограничен.
Application Performance Monitoring (APM) — клас инструменти за мониторинг на мобилни приложения. APM измерва: време за стартиране, мрежови заявки, FPS, използване на памет, честота на сривове. Основни играчи: Sentry (Performance), New Relic Mobile, Datadog Mobile.
Sentry — не само отчитане на сривове, но и мониторинг на производителността. Sentry Performance създава разпределени трасировки, които показват колко време е отнел всеки етап: от натискане на бутон до отговор от сървъра. Поддържа iOS, Android, Flutter, React Native. Безплатно до 5k събития на месец.
New Relic Mobile предоставя метрики: брой сесии, време в приложението, честота на сривове, мрежови заявки. Datadog Mobile е по-модерен инструмент с табла за управление в реално време и аларми. И двата са платени, но имат безплатни нива. IT Sectr препоръчва да започнете с Firebase Performance и да преминете към платен APM, когато DAU надхвърли 100 000.
Firebase Performance — безплатен инструмент за мониторинг на мобилни приложения от Google. Автоматично събира метрики: време за стартиране на приложението, HTTP заявки (URL, метод, код на отговор), FPS. За персонализирано проследяване използвайте Trace API. Интеграция: добавете SDK към build.gradle (Android) или Podfile (iOS).
Trace — времеви сегмент с начало и край, който измервате. Пример: trace = FirebasePerformance.getInstance().newTrace("checkout_process"). Метрики — числови показатели (размер на отговор, брой елементи). Firebase Performance не изисква сървърна инфраструктура — всички данни преминават чрез Firebase SDK. При мониторинг на мобилни приложения Trace API предоставя контекст за анализ на производителността.
Често задавани въпроси
Стандартни нива: ERROR (критични грешки), WARN (потенциални проблеми), INFO (ключови събития), DEBUG (отстраняване на грешки), VERBOSE (детайлно проследяване). В продукция се запазват ERROR, WARN и INFO, останалите се изключват.
Timber е библиотека-обвивка над Logcat от Jake Wharton за логиране на мобилни приложения на Android. Тя автоматично вмъква маркера на класа, конфигурира Tree и изключва логовете в продукция с един ред код.
APM (Application Performance Monitoring) — клас инструменти за проследяване на производителността: време за стартиране, мрежови заявки, използване на памет, честота на сривове. При мониторинг на мобилни приложения New Relic, Datadog и Firebase Performance помагат за намиране на тесни места преди жалби на потребители.
За стартираща фирма Firebase Performance е достатъчен — безплатен инструмент за мониторинг на мобилни приложения. New Relic и Datadog се свързват, когато е необходимо детайлно проследяване и персонализирани табла. IT Sectr препоръчва да започнете с Firebase и да преминете към платени решения, когато DAU надхвърли 100 000.
Структурираното логиране е формат на логове в JSON или ключ-стойност вместо plain text. То позволява филтриране на логове по полета, изграждане на графики и автоматичен анализ в ELK или Grafana. Без структурирани логове е трудно да се намерят модели в хиляди записи.
Резюме
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.