La registrazione e il monitoraggio sono due pilastri della stabilità delle applicazioni mobili. Secondo Gartner (2025), il mercato delle soluzioni APM raggiungerà 8 miliardi di dollari entro il 2027. Una corretta registrazione consente non solo di trovare bug, ma anche di prevedere i problemi prima che influiscano sugli utenti.
Punti chiave
La registrazione di applicazioni mobili su iOS si basa su os_log — il sistema integrato di Apple, disponibile da iOS 10. os_log scrive i log in un unico log di sistema (sul dispositivo o tramite Console.app), supporta categorie, livelli e tag privacy. La combinazione di registrazione e monitoraggio su iOS tramite Console.app e xcrun consente di tracciare errori e prestazioni in tempo reale.
os_log ha livelli: Default, Info, Debug, Error, Fault. In produzione si mantengono Error e Fault — Debug e Info vengono disattivati. Scegliere il livello corretto fa parte della strategia di monitoraggio di applicazioni mobili su iOS. Privacy: %{public}@ per dati non protetti, %{private}@ per dati personali.
CocoaLumberjack è una libreria popolare per la registrazione iOS. A differenza di os_log, supporta formati personalizzati, scrittura asincrona e rotazione dei log. DDLog, DDTTYLogger (console), DDFileLogger (file con rotazione). Per il monitoraggio remoto, CocoaLumberjack può essere combinato con os_log — scrivere in un file per la registrazione remota e in os_log per Console.app.
Per la registrazione di applicazioni mobili su Android si usa Timber — una libreria di Jake Wharton diventata lo standard della piattaforma. Timber è un wrapper su Android Log (Logcat) che aggiunge automaticamente il tag della classe e configura Tree. Timber fa parte del sistema di monitoraggio delle applicazioni mobili Android: DebugTree per il debug, CrashlyticsTree per l'invio dei dati.
Timber utilizza Tree — un componente che decide cosa fare del log. Nelle build di debug, DebugTree (output su Logcat), in release — CrashlyticsTree (invio di crash). Timber.wtf() registra errori fatali. Timber.tag("CustomTag") sovrascrive il tag. Per un monitoraggio efficace, Timber viene combinato con strumenti APM.
Android Log ha livelli: VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT. ProGuard/R8 rimuove Log.d e Log.v in release — Timber consente la registrazione tramite Plant. La scelta del livello influisce sulla qualità del monitoraggio dell'applicazione mobile — in produzione si mantengono WARN e ERROR.
| Strumento | Piattaforma | Formato | Rotazione | Remoto | Complessità |
|---|---|---|---|---|---|
| os_log | iOS | Strutturato | Sistema | Console.app | Bassa |
| CocoaLumberjack | iOS | Testo/JSON | DDFileLogger | Sì (personalizzato) | Media |
| Timber | Android | Testo | Logcat/Personalizzato | Tree | Bassa |
| Sentry | iOS/Android | JSON | Server | Sì | Media |
| Logcat | Android | Testo | Buffer | ADB | Bassa |
Quando si sceglie uno strumento di registrazione, considerare: se serve la registrazione remota, quanto spesso cambiano i log e chi li analizzerà. Per le startup, os_log o Timber sono sufficienti. Per le aziende — CocoaLumberjack con invio al server. In IT Sectr, usiamo la combinazione Timber + Crashlytics per Android e os_log + CocoaLumberjack per iOS.
Structured logging — scrittura dei log in formato JSON invece di testo semplice. Esempio: invece di "User login failed" scriviamo {"event": "login_failed", "user_id": 123, "reason": "invalid_password"}. Questa è la base per il monitoraggio automatico — lo stack ELK e Grafana filtrano, aggregano e analizzano tali dati.
Filtraggio per campi: trova tutti i log con event=crash nell'ultima ora. Aggregazione: costruisci un grafico del numero di errori per versione dell'app. Integrazione con ELK (Elasticsearch, Logstash, Kibana) o Grafana. Lo structured logging non è obbligatorio per i primi rilasci, ma diventa critico quando il DAU supera 10.000.
Registrazione remota — invio dei log dal dispositivo a un server per il monitoraggio centralizzato. Implementata tramite Tree personalizzato (Android) o richieste HTTP. Invia solo Error e Warning — non sprecare il traffico dell'utente. Rotazione dei log: DDFileLogger (iOS) ogni 1 MB o 1 giorno. Su Android, il buffer di Logcat è limitato.
Application Performance Monitoring (APM) — una classe di strumenti per il monitoraggio di applicazioni mobili. L'APM misura: tempo di avvio, richieste di rete, FPS, utilizzo della memoria, frequenza dei crash. Principali attori: Sentry (Performance), New Relic Mobile, Datadog Mobile.
Sentry — non solo segnalazione di crash, ma anche monitoraggio delle prestazioni. Sentry Performance crea trace distribuiti che mostrano quanto tempo ha impiegato ogni fase: dalla pressione del pulsante alla risposta del server. Supporta iOS, Android, Flutter, React Native. Gratuito fino a 5k eventi al mese.
New Relic Mobile fornisce metriche: numero di sessioni, tempo nell'app, frequenza dei crash, richieste di rete. Datadog Mobile è uno strumento più moderno con dashboard in tempo reale e avvisi. Entrambi sono a pagamento, ma hanno livelli gratuiti. IT Sectr consiglia di iniziare con Firebase Performance e passare ad APM a pagamento quando il DAU supera 100.000.
Firebase Performance — uno strumento gratuito di monitoraggio di applicazioni mobili di Google. Raccoglie automaticamente metriche: tempo di avvio dell'app, richieste HTTP (URL, metodo, codice di risposta), FPS. Per tracciamento personalizzato, usa l'API Trace. Integrazione: aggiungi l'SDK a build.gradle (Android) o Podfile (iOS).
Trace — un segmento di tempo con inizio e fine che misuri. Esempio: trace = FirebasePerformance.getInstance().newTrace("checkout_process"). Metriche — indicatori numerici (dimensione della risposta, numero di elementi). Firebase Performance non richiede infrastruttura server — tutti i dati passano attraverso l'SDK Firebase. Quando si monitorano applicazioni mobili, l'API Trace fornisce contesto per l'analisi delle prestazioni.
Domande frequenti
Livelli standard: ERROR (errori critici), WARN (problemi potenziali), INFO (eventi chiave), DEBUG (debug), VERBOSE (tracciamento dettagliato). In produzione si mantengono ERROR, WARN e INFO, gli altri vengono disattivati.
Timber è una libreria wrapper su Logcat di Jake Wharton per la registrazione di applicazioni mobili su Android. Inserisce automaticamente il tag della classe, configura Tree e disabilita i log in produzione con una riga di codice.
APM (Application Performance Monitoring) — una classe di strumenti per tracciare le prestazioni: tempo di avvio, richieste di rete, utilizzo della memoria, frequenza dei crash. Quando si monitorano applicazioni mobili, New Relic, Datadog e Firebase Performance aiutano a trovare i colli di bottiglia prima delle lamentele degli utenti.
Per una startup, Firebase Performance è sufficiente — uno strumento gratuito di monitoraggio di applicazioni mobili. New Relic e Datadog vengono collegati quando servono tracciamento dettagliato e dashboard personalizzate. IT Sectr consiglia di iniziare con Firebase e passare a soluzioni a pagamento quando il DAU supera 100.000.
Lo structured logging è un formato di log in JSON o chiave-valore invece del testo semplice. Consente di filtrare i log per campi, costruire grafici e analizzare automaticamente in ELK o Grafana. Senza log strutturati, è difficile trovare pattern in migliaia di record.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.