Логування та моніторинг у мобільній розробці: суть, які інструменти та як налаштувати

Автор: IT Sectr Опубліковано: 2026-05-27 Час читання: 8 хв

Логування та моніторинг — два стовпи стабільності мобільного застосунку. За даними Gartner (2025), ринок APM-рішень досягне $8 млрд до 2027 року. Правильне логування дозволяє не лише знаходити баги, але й передбачати проблеми до того, як вони вплинуть на користувачів.

Головне

  • На iOS основні інструменти — os_log (вбудоване системне логування) та CocoaLumberjack (гнучка бібліотека з ротацією та форматуванням). Моніторинг на iOS дозволяє контролювати продуктивність у реальному часі.
  • На Android стандарт — Timber (обгортка над Logcat) та системний Log. Timber автоматично підставляє тег класу та керує рівнями логування.
  • Structured logging — запис логів у JSON. Дозволяє аналізувати логи автоматично через ELK, Grafana або Datadog. Рекомендується для production та автоматичного моніторингу.
  • APM (Application Performance Monitoring) — клас інструментів для моніторингу мобільних застосунків: New Relic, Datadog, Firebase Performance.
  • Log rotation та remote logging — обов'язкові для продакшену. Логи не повинні заповнювати пам'ять пристрою та мають бути доступні розробнику віддалено.

Логування та моніторинг на iOS: os_log та CocoaLumberjack

Логування мобільних застосунків на iOS будується на os_log — вбудованій системі Apple, доступній з iOS 10. os_log пише логи в єдиний системний лог (on-device або через Console.app), підтримує категорії, рівні та privacy-теги. Комбінація логування та моніторингу на iOS через Console.app та xcrun дозволяє відстежувати помилки та продуктивність у реальному часі.

Log Level на iOS

os_log має рівні: Default, Info, Debug, Error, Fault. У продакшені залишають Error та Fault — Debug та Info вимикаються. Вибір правильного рівня — частина стратегії моніторингу мобільних застосунків на iOS. Privacy: %{public}@ для незахищених даних, %{private}@ для персональних.

CocoaLumberjack

CocoaLumberjack — популярна бібліотека для iOS-логування. На відміну від os_log, вона підтримує кастомні формати, асинхронний запис та log rotation. DDLog, DDTTYLogger (консоль), DDFileLogger (файл з ротацією). Для віддаленого моніторингу CocoaLumberjack можна комбінувати з os_log — писати у файл для remote logging та в os_log для Console.app.

Логування та моніторинг на Android: Timber та Log Level

Для логування мобільних застосунків на Android використовують Timber — бібліотеку від Jake Wharton, яка стала стандартом для платформи. Timber — обгортка над Android Log (Logcat), яка автоматично додає тег класу та налаштовує Tree. Timber — частина системи моніторингу мобільних застосунків Android: DebugTree для налагодження, CrashlyticsTree для надсилання даних.

Timber в деталях

Timber використовує Tree — компонент, який вирішує, що робити з логом. У debug-збірці DebugTree (вивід у Logcat), у release — CrashlyticsTree (надсилання крашів). Timber.wtf() логує фатальні помилки. Timber.tag("CustomTag") перевизначає тег. Для ефективного моніторингу Timber комбінують з APM-інструментами.

Log Level на Android

Android Log має рівні: VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT. ProGuard/R8 вирізає Log.d та Log.v у release — Timber залишає можливість логувати через Plant. Вибір рівня впливає на якість моніторингу мобільного застосунку — у продакшені залишають WARN та ERROR.

Інструмент Платформа Формат Ротація Remote Складність
os_logiOSСтруктурованийСистемнаConsole.appНизька
CocoaLumberjackiOSТекстовий/JSONDDFileLoggerТак (кастомний)Середня
TimberAndroidТекстовийLogcat/CustomTreeНизька
SentryiOS/AndroidJSONСервернаТакСередня
LogcatAndroidТекстовийБуферADBНизька

При виборі інструменту логування враховуйте: чи потрібен remote logging, як часто змінюються логи та хто їх буде аналізувати. Для стартапів достатньо os_log або Timber. Для enterprise — CocoaLumberjack з відправкою на сервер. В IT Sectr ми використовуємо зв'язку Timber + Crashlytics для Android та os_log + CocoaLumberjack для iOS.

Structured Logging

Structured logging — запис логів у форматі JSON, а не plain text. Приклад: замість "User login failed" пишемо {"event": "login_failed", "user_id": 123, "reason": "invalid_password"}. Це основа для автоматичного моніторингу — ELK-стек та Grafana фільтрують, агрегують та аналізують такі дані.

Переваги structured logging

Фільтрація за полями: знайдіть всі логи з event=crash за останню годину. Агрегація: побудуйте графік кількості помилок за версіями застосунку. Інтеграція з ELK (Elasticsearch, Logstash, Kibana) або Grafana. Structured logging не обов'язковий для перших релізів, але критичний при зростанні DAU вище 10 000.

Remote Logging та Log Rotation

Remote logging — відправка логів з пристрою на сервер для централізованого моніторингу. Реалізується через кастомний Tree (Android) або HTTP-запити. Відправляйте тільки Error та Warning — не витрачайте трафік користувача. Log rotation: DDFileLogger (iOS) кожні 1 МБ або 1 день. На Android — буфер Logcat обмежений.

APM та моніторинг мобільних застосунків: Sentry, New Relic, Datadog

Application Performance Monitoring (APM) — клас інструментів для моніторингу мобільних застосунків. APM вимірює: час запуску, мережеві запити, FPS, використання пам'яті, частоту крашів. Основні гравці: Sentry (Performance), New Relic Mobile, Datadog Mobile.

Sentry Performance

Sentry — не лише crash reporting, але й performance monitoring. Sentry Performance створює distributed traces, які показують, скільки часу зайняв кожен етап: від натискання кнопки до відповіді сервера. Підтримує iOS, Android, Flutter, React Native. Безкоштовно до 5k подій на місяць.

New Relic та Datadog

New Relic Mobile дає метрики: кількість сесій, час у застосунку, частота крашів, мережеві запити. Datadog Mobile — більш сучасний інструмент з real-time дашбордами та алертами. Обидва платні, але мають безкоштовні тири. IT Sectr рекомендує почати з Firebase Performance, а переходити на платні APM при зростанні DAU вище 100 000.

Firebase Performance

Firebase Performance — безкоштовний інструмент моніторингу мобільних застосунків від Google. Автоматично збирає метрики часу запуску застосунку, HTTP-запитів (URL, метод, код відповіді), FPS. Для кастомної трасування використовуйте Trace API. Інтеграція: додайте SDK у build.gradle (Android) або Podfile (iOS).

Trace та метрики

Trace — відрізок часу з початком та кінцем, який ви вимірюєте. Приклад: trace = FirebasePerformance.getInstance().newTrace("checkout_process"). Метрики — числові показники (розмір відповіді, кількість елементів). Firebase Performance не потребує серверної інфраструктури — всі дані йдуть через Firebase SDK. При моніторингу мобільних застосунків Trace API дає контекст для аналізу продуктивності.

Часті запитання

Які рівні логування існують і коли їх використовувати?

Стандартні рівні: ERROR (критичні помилки), WARN (потенційні проблеми), INFO (ключові події), DEBUG (налагодження), VERBOSE (детальна трасування). У продакшені залишають ERROR, WARN та INFO, інші вимикають.

Чим Timber відрізняється від Logcat в Android?

Timber — бібліотека-обгортка над Logcat від Jake Wharton для логування мобільних застосунків на Android. Вона автоматично підставляє тег класу, налаштовує Tree та вимикає логи в продакшені одним рядком коду.

Що таке APM і навіщо він потрібен мобільному застосунку?

APM (Application Performance Monitoring) — клас інструментів для відстеження продуктивності: часу запуску, мережевих запитів, використання пам'яті, частоти крашів. При моніторингу мобільних застосунків New Relic, Datadog та Firebase Performance допомагають знайти вузькі місця до скарг користувачів.

Чи варто використовувати платні APM-рішення для стартапу?

Для стартапу достатньо Firebase Performance — безкоштовного моніторингу мобільного застосунку. New Relic та Datadog підключають при потребі в детальному трасуванні та кастомних дашбордах. IT Sectr рекомендує починати з Firebase і переходити на платні рішення при зростанні DAU вище 100 000.

Що таке structured logging і чим він кращий за звичайний текст?

Structured logging — це формат логів у JSON або ключ-значення замість plain text. Він дозволяє фільтрувати логи за полями, будувати графіки та автоматично аналізувати в ELK або Grafana. Без структурованих логів складно шукати закономірності в тисячі записів.

Підсумки

  • os_log — базовий інструмент логування та моніторингу на iOS. CocoaLumberjack додає гнучкість, ротацію та remote logging.
  • Timber — стандарт логування мобільних застосунків на Android. DebugTree для debug, CrashlyticsTree для release.
  • Structured logging (JSON) необхідний для автоматичного аналізу логів. Інтегрується з ELK, Grafana, Datadog.
  • APM — Sentry Performance, New Relic, Datadog. Firebase Performance — безкоштовний інструмент моніторингу мобільних застосунків для стартапів.
  • Log rotation запобігає переповненню пам'яті пристрою. Налаштуйте DDFileLogger (iOS) або використовуйте буфер Logcat (Android).
  • Remote logging — відправляйте тільки Error та Warning логи. Всі логи вбивають трафік користувача.
  • Trace API та breadcrumbs (Sentry) дають контекст для моніторингу мобільних застосунків, перетворюючи логи в історію інциденту.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект