Visualizza i log con Logcat

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:

  1. In Android Studio, crea ed esegui la tua app su un emulatore o un dispositivo fisico.
  2. 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 Scorri fino all'icona Fine dalla barra degli strumenti. Puoi anche utilizzare la barra degli strumenti per cancellare, mettere in pausa o riavviare Logcat.

UI della finestra di 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 Icona Softwrap 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 Icona 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.

Più finestre Logcat 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.

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.

Elenco di suggerimenti 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 campo tag 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 esempio DEBUG.
  • 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 e d 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 tra s, m, h e d (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 Icona filtro 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.

UI per aggiungere una query ai preferiti

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.

Finestra di logcat per gli arresti anomali dell&#39;app

Figura 5. Quando il processo dell'app viene riavviato, Logcat stampa un messaggio che indica che il processo è terminato e quindi è iniziato.