Логування та моніторинг — два стовпи стабільності мобільного застосунку. За даними Gartner (2025), ринок APM-рішень досягне $8 млрд до 2027 року. Правильне логування дозволяє не лише знаходити баги, але й передбачати проблеми до того, як вони вплинуть на користувачів.
Головне
Логування мобільних застосунків на iOS будується на os_log — вбудованій системі Apple, доступній з iOS 10. os_log пише логи в єдиний системний лог (on-device або через Console.app), підтримує категорії, рівні та privacy-теги. Комбінація логування та моніторингу на iOS через Console.app та xcrun дозволяє відстежувати помилки та продуктивність у реальному часі.
os_log має рівні: Default, Info, Debug, Error, Fault. У продакшені залишають Error та Fault — Debug та Info вимикаються. Вибір правильного рівня — частина стратегії моніторингу мобільних застосунків на iOS. Privacy: %{public}@ для незахищених даних, %{private}@ для персональних.
CocoaLumberjack — популярна бібліотека для iOS-логування. На відміну від os_log, вона підтримує кастомні формати, асинхронний запис та log rotation. DDLog, DDTTYLogger (консоль), DDFileLogger (файл з ротацією). Для віддаленого моніторингу CocoaLumberjack можна комбінувати з os_log — писати у файл для remote logging та в 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.
| Інструмент | Платформа | Формат | Ротація | Remote | Складність |
|---|---|---|---|---|---|
| os_log | iOS | Структурований | Системна | Console.app | Низька |
| CocoaLumberjack | iOS | Текстовий/JSON | DDFileLogger | Так (кастомний) | Середня |
| Timber | Android | Текстовий | Logcat/Custom | Tree | Низька |
| Sentry | iOS/Android | JSON | Серверна | Так | Середня |
| Logcat | Android | Текстовий | Буфер | ADB | Низька |
При виборі інструменту логування враховуйте: чи потрібен remote logging, як часто змінюються логи та хто їх буде аналізувати. Для стартапів достатньо os_log або Timber. Для enterprise — CocoaLumberjack з відправкою на сервер. В IT Sectr ми використовуємо зв'язку Timber + Crashlytics для Android та os_log + CocoaLumberjack для iOS.
Structured logging — запис логів у форматі JSON, а не plain text. Приклад: замість "User login failed" пишемо {"event": "login_failed", "user_id": 123, "reason": "invalid_password"}. Це основа для автоматичного моніторингу — ELK-стек та Grafana фільтрують, агрегують та аналізують такі дані.
Фільтрація за полями: знайдіть всі логи з event=crash за останню годину. Агрегація: побудуйте графік кількості помилок за версіями застосунку. Інтеграція з ELK (Elasticsearch, Logstash, Kibana) або Grafana. Structured logging не обов'язковий для перших релізів, але критичний при зростанні DAU вище 10 000.
Remote logging — відправка логів з пристрою на сервер для централізованого моніторингу. Реалізується через кастомний Tree (Android) або HTTP-запити. Відправляйте тільки Error та Warning — не витрачайте трафік користувача. Log rotation: DDFileLogger (iOS) кожні 1 МБ або 1 день. На Android — буфер Logcat обмежений.
Application Performance Monitoring (APM) — клас інструментів для моніторингу мобільних застосунків. APM вимірює: час запуску, мережеві запити, FPS, використання пам'яті, частоту крашів. Основні гравці: Sentry (Performance), New Relic Mobile, Datadog Mobile.
Sentry — не лише crash reporting, але й performance monitoring. Sentry Performance створює distributed traces, які показують, скільки часу зайняв кожен етап: від натискання кнопки до відповіді сервера. Підтримує iOS, Android, Flutter, React Native. Безкоштовно до 5k подій на місяць.
New Relic Mobile дає метрики: кількість сесій, час у застосунку, частота крашів, мережеві запити. Datadog Mobile — більш сучасний інструмент з real-time дашбордами та алертами. Обидва платні, але мають безкоштовні тири. 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.
Structured logging — це формат логів у JSON або ключ-значення замість plain text. Він дозволяє фільтрувати логи за полями, будувати графіки та автоматично аналізувати в ELK або Grafana. Без структурованих логів складно шукати закономірності в тисячі записів.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.