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 all'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, procedi nel seguente modo.

  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.

L'interfaccia utente della finestra 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 consente di identificare il tipo di log. Ogni voce di log ha la priorità FATAL, ERROR, WARNING, INFO, DEBUG o VERBOSE.

Ad esempio, il seguente messaggio di log ha la priorità DEBUG e un 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 standard dei log mostra la data, l'ora di processo 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 aggregate nella visualizzazione log, ma puoi utilizzare l'opzione Soft Wrap Icona SoftWrap dalla barra degli strumenti Logcat.

Puoi passare alla vista 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 timestamp, tag, ID di processo o 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 ad 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. Fare clic con il pulsante destro del mouse su una scheda ti consente di 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 Riquadri suddivisi dalla 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 garantisce la precisione delle query su cui eseguire query ed esclude anche i log in base alle coppie chiave-valore. Sebbene sia possibile utilizzare le espressioni regolari, non è necessario utilizzarle per le query. Per visualizzare i 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 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 tramite espressioni regolari: tag, package, message e line.

La negazione viene espressa anteponendo un - al nome del campo. Ad esempio, -tag:MyTag corrisponde alle 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 dalle parentesi. Ecco alcuni esempi:

(tag:foo | level:ERROR) & package:mine

Tieni presente che viene applicata la precedenza normale dell'operatore, 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 del filtro key-value non negati con la stessa chiave di OR e tutto il resto con un AND.

Ecco alcuni esempi:

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 di 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 con un timestamp nell'intervallo descritto dal valore. Ad esempio, la query age:5m trova le voci con un timestamp risalente a non 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 tasto

Puoi utilizzare la chiave is nel seguente modo:

  • 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 tutto ciò che assomiglia a una traccia dello stack Java, indipendentemente dal livello di log.

name tasto

La chiave name consente di fornire un nome univoco per 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

Puoi visualizzare la cronologia delle query facendo 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 la sezione Query speciali.

UI per l&#39;aggiunta di una query ai preferiti

Figura 4. Aggiungi una query ai preferiti facendo clic sulla stella accanto a essa.

Monitorare i log relativi ad arresti anomali e riavvii dell'app

Quando Logcat rileva che il processo dell'app è stato interrotto e riavviato, mostra un messaggio nell'output, ad esempio PROCESS ENDED e PROCESS STARTED. Il riavvio di Logcat conserva la configurazione della sessione, ad esempio suddivisioni di schede, filtri e opzioni di visualizzazione, in modo da poter continuare facilmente la sessione.

Finestra logcat per arresti anomali dell&#39;app

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