Come faccio a scrivere output nel log in Android?


153

Voglio scrivere un output di debug nel registro per esaminarlo con logcat.

Se scrivo qualcosa su System.out, questo è già visualizzato in logcat.

Qual è il modo pulito per scrivere nel registro e aggiungere livelli e tag al mio output?

Risposte:


211

Guarda dentro android.util.Log. Ti consente di scrivere nel registro con vari livelli di registro e puoi specificare tag diversi per raggruppare l'output. Per esempio

Log.w("myApp", "no network");

genererà un avviso con il tag myApp e il messaggio no network.


quale sarebbe il diverso usando log.d?
JMASTER B,

5
win Log.w(...)sta per avvertimento. Esistono più versioni: d- debug, e- errore, i- info, v- verbose, wtf- What a Terrible Failure. ;-)
patryk.beza,

20

Il tag viene utilizzato solo per trovare facilmente l'output, poiché l'output di LogCat può essere talvolta molto lungo. Puoi definire da qualche parte nella tua classe:

String finale statica privata TAG = "myApp";

e usarlo durante il debug

Log.v (TAG, "fatto qualcosa");

inserisci qui la descrizione dell'immagine

Puoi anche applicare un filtro per cercare solo il tag.


17

Uso android.util.Loge metodi statici definiti là (ad esempio, e(), w()).


8
import android.util.Log;

e poi

Log.i("the your message will go here"); 

5

Si prega di vedere i registri in questo modo,

Log.e("ApiUrl = ", "MyApiUrl") (error)
Log.w("ApiUrl = ", "MyApiUrl") (warning)
Log.i("ApiUrl = ", "MyApiUrl") (information)
Log.d("ApiUrl = ", "MyApiUrl") (debug)
Log.v("ApiUrl = ", "MyApiUrl") (verbose)

1

Puoi usare la mia libreria chiamata RDALogger. Ecco il link github .

Con questa libreria, è possibile registrare il messaggio con nome metodo / nome classe / numero riga e collegamento di ancoraggio. Con questo collegamento, quando si fa clic su registro, lo schermo passa a questa riga di codice.

Per utilizzare la libreria, è necessario eseguire le implementazioni di seguito.

nel livello di radice

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

a livello di app

dependencies {
            implementation 'com.github.ardakaplan:RDALogger:1.0.0'
    }

Per inizializzare la libreria, dovresti iniziare in questo modo (in Application.class o prima del primo utilizzo)

RDALogger.start("TAG NAME").enableLogging(true);

E poi puoi registrare quello che vuoi;

    RDALogger.info("info");
    RDALogger.debug("debug");
    RDALogger.verbose("verbose");
    RDALogger.warn("warn");
    RDALogger.error("error");
    RDALogger.error(new Throwable());
    RDALogger.error("error", new Throwable());

E infine l'output mostra tutto ciò che vuoi (nome della classe, nome del metodo, collegamento di ancoraggio, messaggio)

08-09 11:13:06.023 20025-20025/com.ardakaplan.application I/Application: IN CLASS : (ENApplication.java:29)   ///   IN METHOD : onCreate
    info


0

Recentemente ho trovato questo approccio alla scrittura di log in Android, che penso sia fantastico.

public static final boolean FORCED_LOGGING = true;
private static final int CALLER_STACK_INDEX = 3;

public static void showLogs(String message) {
        if (FORCED_LOGGING) {
            StackTraceElement caller = Thread.currentThread().getStackTrace()[CALLER_STACK_INDEX];

            String fullClassName = caller.getClassName();
            String className = fullClassName.substring(fullClassName.lastIndexOf('.') + 1);
            String methodName = caller.getMethodName();
            int lineNumber = caller.getLineNumber();

            Log.i("*** " + className + "." + methodName + "():" + lineNumber + "\n" , message);
        }
    }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.