Comment écrire des sorties dans le journal sous Android?

153

Je veux écrire une sortie de débogage dans le journal pour l'examiner avec logcat.

Si j'écris quelque chose dans System.out, cela s'affiche déjà dans logcat.

Quelle est la manière propre d'écrire dans le journal et d'ajouter des niveaux et des balises à ma sortie?

Janusz
la source

Réponses:

211

Regardez dans android.util.Log. Il vous permet d'écrire dans le journal avec différents niveaux de journalisation et vous pouvez spécifier différentes balises pour regrouper la sortie. Par exemple

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

affichera un avertissement avec la balise myApp et le message no network.

Erich Douglass
la source
quelle serait la différence en utilisant log.d?
JMASTER B
5
wdans Log.w(...)signifie avertissement. Il existe plusieurs versions: d- debug, e- error, i- info, v- verbose, wtf- What a Terrible Failure. ;-)
patryk.beza
20

La balise est juste utilisée pour trouver facilement votre sortie, car la sortie de LogCat peut être parfois très longue. Vous pouvez définir quelque part dans votre classe:

Private static final String TAG = "myApp";

et utilisez-le lors du débogage

Log.v (TAG, "fait quelque chose");

entrez la description de l'image ici

Vous pouvez également appliquer un filtre pour rechercher uniquement la balise.

user1767754
la source
17

L' utilisation android.util.Loget les méthodes de statiques qui y sont définis (par exemple e(), w()).

CommonsWare
la source
8
import android.util.Log;

puis

Log.i("the your message will go here"); 
Atreya Rath
la source
5

Veuillez consulter les journaux de cette façon,

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)
Dnyaneshwar Panchal
la source
1

Vous pouvez utiliser ma bibliothèque appelée RDALogger. Voici le lien github .

Avec cette bibliothèque, vous pouvez enregistrer votre message avec le nom de la méthode / le nom de la classe / le numéro de ligne et le lien d'ancrage. Avec ce lien, lorsque vous cliquez sur journal, l'écran accède à cette ligne de code.

Pour utiliser la bibliothèque, vous devez effectuer les implémentations ci-dessous.

dans le niveau racine

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

au niveau de l'application

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

Pour initialiser la bibliothèque, vous devez commencer comme ceci (dans Application.class ou avant la première utilisation)

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

Et que vous pouvez enregistrer tout ce que vous voulez;

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

Et enfin la sortie vous montre tout ce que vous voulez (nom de classe, nom de méthode, lien d'ancrage, message)

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

Récemment, j'ai trouvé cette approche pour écrire des journaux sous Android, ce que je trouve super génial.

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);
        }
    }
Tushar Pandey
la source