web-dev-qa-db-fra.com

Comment écrire des sorties dans le journal sous Android?

Je veux écrire quelques résultats de débogage dans le journal pour l'examiner avec logcat.

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

Quelle est la méthode la plus simple pour écrire dans le journal et ajouter des niveaux et des balises à ma sortie?

145
Janusz

Regardez dans Android.util.Log . Il vous permet d'écrire dans le journal avec différents niveaux de journal 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.

200
Erich Douglass

La balise est simplement 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 = "monApp";

et l'utiliser lors du débogage

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

enter image description here

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

19
user1767754

Utilisez Android.util.Log et les méthodes statiques définies ici (par exemple, e(), w()).

17
CommonsWare
import Android.util.Log;

puis

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

S'il vous plaît voir les journaux comme ceci,

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)
4

Récemment, j'ai trouvé cette approche pour écrire des journaux dans Android, ce qui me semble 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);
        }
    }
0
Tushar Pandey
String one = object.getdata();
Log.d(one,"");
0
Vickie Kangare

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

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 affiche cette ligne de code.

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

en niveau de racine

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

dans le niveau de l'application

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

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

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

Et que vous pouvez vous connecter 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 finalement, 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
0
Arda