La finestra Logcat in Android Studio consente di eseguire il debug dell'app mostrando i log del dispositivo in tempo reale, ad esempio i messaggi che hai aggiunto alla tua app con la classe Log
, i messaggi da servizi in esecuzione su Android o i messaggi di sistema, ad esempio quando si verifica una garbage collection. Quando un'app genera un'eccezione, Logcat mostra un messaggio seguito dall'analisi dello stack associata contenente i link alla riga di codice.
Inizia a utilizzare la finestra Logcat
Per visualizzare i messaggi di log per la tua app:
- In Android Studio, crea ed esegui la tua app su un emulatore o un dispositivo fisico.
- Seleziona Visualizza > Finestre degli strumenti > Logcat dalla barra dei menu.
Per impostazione predefinita, Logcat scorre fino alla fine. Fai clic sulla visualizzazione Logcat o scorri verso l'alto con la rotellina del mouse per disattivare la funzione. Per riattivarla, fai clic su Scorri fino alla fine dalla barra degli strumenti. Puoi anche utilizzare la barra degli strumenti per cancellare, mettere in pausa o riavviare Logcat.
Figura 1. Logcat formatta i log per semplificare la scansione di informazioni utili, come tag e messaggi, e identificare diversi tipi di log, come avvisi ed errori.
Come leggere i log
A ogni log sono associati data, timestamp, ID processo e thread, tag, nome del pacchetto, priorità e messaggio. Tag diversi hanno un colore univoco che
aiuta a identificare il tipo di log. Ogni voce di log ha una priorità di FATAL
,
ERROR
, WARNING
, INFO
, DEBUG
o VERBOSE
.
Ad esempio, il seguente messaggio di log ha priorità DEBUG
e tag ProfileInstaller
:
2022-12-29 04:00:18.823 30249-30321 ProfileInstaller com.google.samples.apps.sunflower D Installing profile for com.google.samples.apps.sunflower
Configura la visualizzazione log
La visualizzazione log standard mostra la data, il processo temporale e l'ID thread, il tag, il nome del pacchetto, la priorità e il messaggio associato di ogni log. Per impostazione predefinita, le righe dei messaggi non vengono sottoposte a wrapping nella visualizzazione log, ma puoi utilizzare l'opzione Soft-Wrap dalla barra degli strumenti di Logcat.
Puoi passare alla visualizzazione Compatta, che ha meno informazioni di visualizzazione predefinite, facendo clic su Configura opzioni di formattazione Logcat dalla barra degli strumenti Logcat.
Per configurare ulteriormente la quantità di informazioni da visualizzare, seleziona Modifica visualizzazioni e scegli se visualizzare il timestamp, i tag, gli ID processo o i nomi dei pacchetti.
Cambiare la combinazione di colori
Per modificare la combinazione di colori, vai ad Android Studio > Impostazioni > Editor > Combinazione di colori. Per modificare la combinazione di colori della visualizzazione log, seleziona Android Logcat. Per modificare la combinazione di colori del filtro, seleziona Filtro logcat.
Opzioni di configurazione aggiuntive
Per ulteriori opzioni di configurazione, vai a Android Studio > Impostazioni > Strumenti > Logcat. Da qui, puoi scegliere la dimensione del buffer del ciclo Logcat, il filtro predefinito per le nuove finestre Logcat e se vuoi aggiungere filtri dalla cronologia al completamento automatico.
Utilizzare Logcat in più finestre
Le schede ti consentono di passare facilmente da un dispositivo all'altro o da una query all'altra. Puoi creare più schede Logcat facendo clic su Nuova scheda .
Fai clic con il pulsante destro del mouse su una scheda per rinominarla e riordinarla.
Inoltre, puoi suddividere la visualizzazione all'interno di una scheda per confrontare più facilmente tra due set di log. Per creare una suddivisione, fai clic con il tasto destro del mouse nella visualizzazione log oppure fai clic sull'opzione Dividi riquadri nella barra degli strumenti e seleziona Dividi a destra o Dividi. Per chiudere una suddivisione, fai clic con il tasto destro del mouse e seleziona Chiudi. Ogni suddivisione consente di impostare la connessione del dispositivo, le opzioni di visualizzazione e la query.
Figura 2. Dividi le finestre Logcat in Android Studio.
Dalla barra degli strumenti Logcat, puoi scorrere fino alla fine dei log oppure fare clic su una riga specifica per mantenerla visibile.
Eseguire query sui log utilizzando la ricerca di coppie chiave-valore
In Android Studio, puoi generare ricerche di coppie chiave-valore direttamente dal campo della query principale. Questo sistema di query fornisce precisione sulle query di cui vuoi eseguire la query ed esclude i log in base alle coppie chiave-valore. Sebbene sia possibile utilizzare le espressioni regolari, non è necessario utilizzarle per le query. Per visualizzare
suggerimenti, premi Ctrl
+ Space
nel campo della query.
Figura 3. Premi
Ctrl
+ Space
nel campo della query per visualizzare un elenco di query suggerite.
Di seguito sono riportati alcuni esempi di chiavi che puoi utilizzare nella query:
tag
: corrisponde al campotag
della voce di log.package
: corrisponde al nome del pacchetto dell'app di logging.process
: corrisponde al nome di processo dell'app di logging.message
: corrisponde alla parte del messaggio della voce di log.level
: corrisponde al livello di log grave specificato o superiore, ad esempioDEBUG
.age
: corrisponde se il timestamp della voce è recente. I valori sono specificati sotto forma di numero seguito da una lettera che specifica l'unità di tempo:s
per i secondi,m
per i minuti,h
per le ore ed
per i giorni. Ad esempio,age: 5m
filtra solo i messaggi che sono stati registrati negli ultimi 5 minuti.
La negazione ed espressioni regolari
I seguenti campi supportano la negazione e la corrispondenza di espressioni regolari: tag
,
package
, message
e line
.
La negazione viene espressa anteponendo un -
al nome del campo. Ad esempio, -tag:MyTag
corrisponde a voci di log il cui tag
non contiene la stringa MyTag
.
La corrispondenza delle espressioni regolari viene espressa aggiungendo ~
al nome del campo.
Ad esempio, tag~:My.*Tag
.
È possibile combinare i modificatori di negazione ed espressione regolare. Ad esempio, -tag~:My.*Tag
.
Operatori logici e parentesi
Il linguaggio di query supporta gli operatori AND
e OR
espressi da &
e |
e le parentesi. Ad esempio:
(tag:foo | level:ERROR) & package:mine
Tieni presente che viene applicata la normale precedenza degli operatori, pertanto:
tag:foo | level:ERROR & package:mine
Viene valutato come:
tag:foo | (level:ERROR & package:mine)
Operatori logici impliciti
Se gli operatori logici non vengono applicati, il linguaggio di query valuta automaticamente più termini di filtro key-value
non negati con la stessa chiave di OR
e tutto il resto con AND
.
Ad esempio:
tag:foo tag:bar package:myapp
Viene valutato come:
(tag:foo | tag:bar) & package:myapp
Tuttavia:
tag:foo -tag:bar package:myapp
Viene valutato come:
tag:foo & -tag:bar & package:myapp
Se più termini di query sono separati da spazi vuoti senza un operatore logico, vengono trattati come AND con una precedenza bassa. Ad esempio, il termine foo bar tag:bar1 | tag:bar2
è equivalente a 'foo bar' & (tag: bar1 | tag: bar2)
.
Query speciali
package:mine
La chiave del pacchetto supporta un valore speciale mine
. Questo valore speciale corrisponde a tutti i nomi di pacchetto contenuti nel progetto aperto.
level
La query level
corrisponde al livello di log del messaggio Logcat, dove il livello della voce di log è maggiore o uguale al livello di query.
Ad esempio, level:INFO
corrisponde a qualsiasi voce di log con un livello di log INFO
, WARN
, ERROR
o ASSERT
. Il livello non è sensibile alle maiuscole. I livelli validi sono:
VERBOSE
, DEBUG
, INFO
, WARN
, ERROR
e ASSERT
.
age
La query age
corrisponde alle voci in base al relativo timestamp ed è formattata come age:<number><unit>
, dove
<number>
è un numero intero<unit>
è uno tras
,m
,h
ed
(secondi, minuti, ore e giorni).
Nell'elenco seguente, la query age
corrisponde ai messaggi di log che hanno un
timestamp nell'intervallo descritto dal valore. Ad esempio, la query age:5m
trova voci con un timestamp che non risale a più di 5 minuti fa.
age:30s
age:5m
age:3h
age:1d
Tieni presente che il timestamp viene confrontato con il timestamp dell'host, non del dispositivo connesso. Se l'ora del dispositivo non è impostata correttamente, questa query potrebbe non funzionare come previsto.
is
token
Puoi utilizzare il tasto is
come segue:
is:crash
corrisponde alle voci di log che rappresentano un arresto anomalo dell'applicazione (nativo o Java).is:stacktrace
corrisponde alle voci di log che rappresentano qualsiasi cosa che sembri un'analisi dello stack Java, indipendentemente dal livello di log.
name
token
La chiave name
ti consente di assegnare un nome univoco a un filtro salvato, in modo che sia facilmente identificabile nel menu a discesa della cronologia dei filtri. Anche se non ricevi un errore se specifichi name
più di una volta, l'IDE utilizza solo l'ultimo valore specificato per name
nella query.
Visualizzare la cronologia delle query
Per visualizzare la cronologia delle query, fai clic su Mostra cronologia accanto al campo della query. Per aggiungere una query ai preferiti in modo che rimanga all'inizio dell'elenco in tutti i progetti di Studio, fai clic sulla stella accanto alla query. Puoi anche
utilizzare il tasto
name:
per rendere più facili da riconoscere le query preferite. Per ulteriori informazioni, consulta Query speciali.
Figura 4. Aggiungere una query ai preferiti facendo clic sulla stella accanto alla query.
Monitora i log relativi ad arresti anomali e riavvii delle app
Quando Logcat rileva che l'elaborazione dell'app è stata interrotta e riavviata, visualizza un messaggio nell'output, ad esempio PROCESS ENDED
e PROCESS STARTED
.
Il riavvio di Logcat conserva la configurazione della sessione, come suddivisioni a schede, filtri e opzioni di visualizzazione, in modo da poter continuare facilmente la sessione.
Figura 5. Quando il processo dell'app viene riavviato, Logcat stampa un messaggio che indica che il processo è terminato e quindi è iniziato.