Ricerca…


Sintassi

  • Log.v(String tag, String msg, Throwable tr)
  • Log.v(String tag, String msg)
  • Log.d(String tag, String msg, Throwable tr)
  • Log.d(String tag, String msg)
  • Log.i(String tag, String msg, Throwable tr)
  • Log.i(String tag, String msg)
  • Log.w(String tag, String msg, Throwable tr)
  • Log.w(String tag, String msg)
  • Log.e(String tag, String msg, Throwable tr)
  • Log.e(String tag, String msg)

Parametri

Opzione Descrizione
-b (buffer) Carica un buffer di registro alternativo per la visualizzazione, ad esempio eventi o radio. Il buffer principale è usato di default. Vedere Visualizzazione dei buffer di registro alternativi.
-c Cancella (svuota) l'intero registro ed esce.
-d Scarica il log sullo schermo ed esce.
-f (nome file) Scrive l'output del messaggio di log su (nome file). L'impostazione predefinita è stdout.
-g Stampa la dimensione del buffer di registro specificato ed esce.
-n (conta) Imposta il numero massimo di registri ruotati su (conteggio). Il valore predefinito è 4. Richiede l'opzione -r.
-r (kbytes) Ruota il file di registro ogni (kbyte) di output. Il valore predefinito è 16. Richiede l'opzione -f.
-S Imposta le specifiche del filtro predefinito su Silenzioso.
-v (formato) Imposta il formato di output per i messaggi di registro. L'impostazione predefinita è il breve formato.

Osservazioni

Definizione

Logcat è uno strumento da riga di comando che esegue il dump di un registro dei messaggi di sistema, incluse le tracce dello stack quando il dispositivo genera un errore e i messaggi che hai scritto dalla tua app con la classe Log .

Quando usare

Se stai pensando di utilizzare i metodi System.out di Java per la stampa sulla console invece di utilizzare uno dei metodi Log di Android, devi sapere che funzionano sostanzialmente allo stesso modo. Tuttavia, è meglio evitare di usare i metodi di Java perché le informazioni extra e la formattazione fornite dai metodi di log di Android sono più vantaggiose. Inoltre, i metodi di stampa System.out vengono reindirizzati al metodo Log.i() .

Filtro dell'output del logcat

È utile filtrare l'output logcat perché ci sono molti messaggi che non interessano. Per filtrare l'output, apri il "Monitor Android" e fai clic sul menu a discesa in alto a destra e seleziona Modifica configurazione filtro

Monitor Android

Ora puoi aggiungere filtri personalizzati per mostrare i messaggi che ti interessano, oltre a filtrare linee di log ben note che possono essere tranquillamente ignorate. Per ignorare una parte dell'output puoi definire un'espressione regolare . Ecco un esempio di esclusione dei tag corrispondenti:

^(?!(HideMe|AndThis))

Questo può essere inserito seguendo questo esempio:

Crea un nuovo filtro logcat

Quanto sopra è un'espressione regolare che esclude gli input. Se si desidera aggiungere un altro tag alla lista nera , aggiungerlo dopo una pipe | personaggio. Ad esempio, se si desidera inserire nella lista nera "GC", si utilizzerà un filtro come questo:

^(?!(HideMe|AndThis|GC))

Per ulteriori documentazione ed esempi visita la registrazione e l'utilizzo di Logcat

Registrazione

Qualsiasi applicazione Android di qualità terrà traccia di ciò che sta facendo attraverso i registri delle applicazioni. Questi registri consentono una facile guida per il debug per lo sviluppatore per diagnosticare cosa sta succedendo con l'applicazione. La documentazione completa di Android può essere trovata qui , ma segue un riepilogo:


Registrazione di base

La classe Log è la fonte principale di scrittura dei log dello sviluppatore, specificando un tag e un message . Il tag è ciò che puoi usare per filtrare i messaggi di log per identificare quali linee provengono dalla tua particolare attività. Basta chiamare

Log.v(String tag, String msg);

E il sistema Android scriverà un messaggio al logcat:

07-28 12:00:00.759 24812-24839/my.packagename V/MyAnimator: Some log messages
 └ time stamp             |  app.package┘     |    └ any tag  |
     process & thread ids ┘          log level┘               └ the log message

MANCIA:
Si noti l'id del processo e l'id del thread. Se sono uguali, il log proviene dal thread principale / dell'interfaccia utente!

È possibile utilizzare qualsiasi tag, ma è comune utilizzare il nome della classe come tag:

public static final String tag = MyAnimator.class.getSimpleName();

Registra i livelli

Il logger Android ha 6 diversi livelli, ognuno dei quali ha un determinato scopo:

  • ERROR : Log.e()
    • Usato per indicare un errore critico, questo è il livello stampato quando si lancia Exception .
  • WARN : Log.w()
    • Utilizzato per indicare un avvertimento, principalmente per guasti recuperabili
  • INFO : Log.i()
    • Utilizzato per indicare informazioni di livello superiore sullo stato dell'applicazione
  • DEBUG : Log.d()
    • Utilizzato per registrare le informazioni che sarebbero utili sapere quando si esegue il debug dell'applicazione, ma si intromettono durante l'esecuzione dell'applicazione
  • VERBOSE : Log.v()
    • Utilizzato per registrare le informazioni che riflettono i piccoli dettagli sullo stato dell'applicazione
  • ASSERT : Log.wtf()
    • Utilizzato per registrare informazioni su una condizione che non dovrebbe mai accadere.
    • wtf sta per "What a Terrible Failure".

Motivazione per la registrazione

La motivazione per la registrazione è quella di trovare facilmente errori, avvisi e altre informazioni dando un'occhiata alla catena di eventi dall'applicazione. Ad esempio, immagina un'applicazione che legge le righe da un file di testo, ma presuppone erroneamente che il file non sarà mai vuoto. La traccia di log (di un'app che non registra) sarebbe simile a questa:

E/MyApplication: Process: com.example.myapplication, PID: 25788
                          com.example.SomeRandomException: Expected string, got 'null' instead

Seguito da una serie di tracce di stack che alla fine porteranno alla linea illecita, in cui il passaggio da un debugger alla fine porterebbe al problema

Tuttavia, la traccia di registro di un'applicazione con la registrazione abilitata potrebbe essere simile a questa:

V/MyApplication: Looking for file myFile.txt on the SD card
D/MyApplication: Found file myFile.txt at path <path>
V/MyApplication: Opening file myFile.txt
D/MyApplication: Finished reading myFile.txt, found 0 lines
V/MyApplication: Closing file myFile.txt
...
E/MyApplication: Process: com.example.myapplication, PID: 25788
                          com.example.SomeRandomException: Expected string, got 'null' instead

Una rapida occhiata ai log ed è ovvio che il file era vuoto.


Cose da considerare durante la registrazione:

Sebbene la registrazione sia un potente strumento che consente agli sviluppatori di Android di ottenere una visione più approfondita del funzionamento interno della loro applicazione, la registrazione presenta alcuni inconvenienti.

Log Readability:

È normale che le applicazioni Android contengano più registri in modo sincrono. In quanto tale, è molto importante che ogni registro sia facilmente leggibile e contenga solo informazioni pertinenti e necessarie.

Prestazione:

La registrazione richiede una piccola quantità di risorse di sistema. In generale, ciò non giustifica la preoccupazione, tuttavia, in caso di uso eccessivo, la registrazione potrebbe avere un impatto negativo sulle prestazioni dell'applicazione.

Sicurezza:

Recentemente, diverse applicazioni Android sono state aggiunte al marketplace di Google Play che consentono all'utente di visualizzare i registri di tutte le applicazioni in esecuzione. Questa visualizzazione non voluta dei dati può consentire agli utenti di visualizzare informazioni riservate. Come regola generale, rimuovi sempre i registri che contengono dati non pubblici prima di pubblicare la tua applicazione sul mercato.


Conclusione:

La registrazione è una parte essenziale di un'applicazione Android, a causa del potere che offre agli sviluppatori. La possibilità di creare un'utile traccia di log è uno degli aspetti più impegnativi dello sviluppo del software, ma la classe Log di Android aiuta a semplificare notevolmente.


Per ulteriori documentazione ed esempi visita la registrazione e l'utilizzo di Logcat

Questo è un bel trucco per aggiungere un collegamento al codice, quindi sarà facile passare al codice che ha emesso il log.

Con il seguente codice, questa chiamata:

MyLogger.logWithLink("MyTag","param="+param);


Risulterà in:

07-26...012/com.myapp D/MyTag: MyFrag:onStart(param=3)  (MyFrag.java:2366) // << logcat converts this to a link to source!

Questo è il codice (all'interno di una classe chiamata MyLogger):

static StringBuilder sb0 = new StringBuilder(); // reusable string object

public static void logWithLink(String TAG, Object param) {
    StackTraceElement stack = Thread.currentThread().getStackTrace()[3];
    sb0.setLength(0);
    String c = stack.getFileName().substring(0, stack.getFileName().length() - 5); // removes the ".java"
    sb0.append(c).append(":");
    sb0.append(stack.getMethodName()).append('(');
    if (param != null) {
        sb0.append(param);
    }
    sb0.append(") ");
    sb0.append(" (").append(stack.getFileName()).append(':').append(stack.getLineNumber()).append(')');
    Log.d(TAG, sb0.toString());
}

Questo è un esempio di base, può essere facilmente esteso per emettere un collegamento al chiamante (suggerimento: lo stack sarà [4] invece di [3]), e puoi anche aggiungere altre informazioni rilevanti.

Utilizzando il logcat

Logcat è uno strumento da riga di comando che esegue il dump di un registro dei messaggi di sistema, incluse le tracce dello stack quando il dispositivo genera un errore e i messaggi che hai scritto dalla tua app con la classe Log.

L'output di Logcat può essere visualizzato all'interno del monitor Android di Android Studio o con la riga di comando adb.

In Android Studio

Mostra facendo clic sull'icona "Monitor Android": inserisci la descrizione dell'immagine qui Oppure premendo Alt + 6 su Windows / Linux o CMD + 6 su Mac.

tramite la riga di comando:

Uso semplice:

$ adb logcat

Con i timestamp:

$ adb logcat -v time

Filtra su un testo specifico:

$ adb logcat -v time | grep 'searchtext'

Ci sono molte opzioni e filtri disponibili per la riga di comando logcat , documentata qui .
Un esempio semplice ma utile è la seguente espressione di filtro che visualizza tutti i messaggi di registro con livello di priorità "errore", su tutti i tag:

$ adb logcat *:E

Generazione del codice di registrazione

Live templates Android Studio possono offrire alcune scorciatoie per la registrazione rapida.
Per utilizzare i modelli Live, è sufficiente iniziare a digitare il nome del modello e premere TAB o immettere per inserire l'istruzione.

Esempi:

  • logi → diventa → android.util.Log.i(TAG, "$METHOD_NAME$: $content$");
    • $METHOD_NAME$ verrà automaticamente sostituito dal nome del tuo metodo e il cursore attenderà che il contenuto venga riempito.
  • loge → stesso, per errore
  • ecc. per il resto dei livelli di registrazione.

Elenco completo dei modelli può essere trovato in Android Studio impostazioni s'(Alt + s e digitare "live"). Ed è possibile aggiungere anche i modelli personalizzati.

Se ritieni che i Live templates Android Studio non siano sufficienti per le tue esigenze, puoi prendere in considerazione il plug-in Postfix di Android

Questa è una libreria molto utile che ti aiuta a evitare di scrivere manualmente la linea di registrazione.

La sintassi è assolutamente semplice:

.log - Registrazione. Se c'è una variabile costante "TAG", usa "TAG". Altrimenti usa il nome della classe.

inserisci la descrizione dell'immagine qui

Utilizzo di Android Studio

  1. Nascondi / mostra le informazioni stampate: Immagine dello schermo

  2. Controlla la verbosità della registrazione: Registra screenshot di verbosità

  3. Disabilita / abilita la finestra del registro di apertura all'avvio dell'applicazione run / debug Disabilita lo screenshot del log di apertura

Cancella registri

Per cancellare (svuotare) l'intero registro:

adb logcat -c


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow