Wie schreibe ich Ausgaben in das Log in Android?


153

Ich möchte eine Debugging-Ausgabe in das Protokoll schreiben, um es mit logcat zu überprüfen.

Wenn ich etwas an System.out schreibe, wird dies bereits in logcat angezeigt.

Wie kann ich sauber in das Protokoll schreiben und meiner Ausgabe Ebenen und Tags hinzufügen?

Antworten:


211

Schau hinein android.util.Log. Sie können mit verschiedenen Protokollebenen in das Protokoll schreiben und verschiedene Tags angeben, um die Ausgabe zu gruppieren. Beispielsweise

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

gibt eine Warnung mit dem Tag myApp und der Nachricht no network aus.


Was wäre der Unterschied bei der Verwendung log.d?
JMASTER B

5
win Log.w(...)steht für Warnung. Es gibt weitere Versionen: d- Debug, e- Fehler, i- Info, v- Ausführlich, wtf- Was für ein schrecklicher Fehler. ;-)
patryk.beza

20

Das Tag wird nur verwendet, um Ihre Ausgabe leicht zu finden, da die Ausgabe von LogCat manchmal sehr lang sein kann. Sie können irgendwo in Ihrer Klasse definieren:

private static final String TAG = "myApp";

und verwenden Sie es beim Debuggen

Log.v (TAG, "hat etwas getan");

Geben Sie hier die Bildbeschreibung ein

Sie können auch einen Filter anwenden, um nur nach dem Tag zu suchen.


17

Verwendung android.util.Logund die statischen Methoden dort definiert (zB e(), w()).


8
import android.util.Log;

und dann

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

5

Bitte sehen Sie die Protokolle so,

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

Sie können meine Bibliothek namens RDALogger verwenden. Hier ist Github Link .

Mit dieser Bibliothek können Sie Ihre Nachricht mit Methodenname / Klassenname / Zeilennummer und Ankerlink protokollieren. Wenn Sie über diesen Link auf Protokoll klicken, wechselt der Bildschirm zu dieser Codezeile.

Um die Bibliothek verwenden zu können, müssen Sie die folgenden Implementierungen durchführen.

im Wurzelniveau gradle

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

in App Level Gradle

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

Um die Bibliothek zu initialisieren, sollten Sie folgendermaßen beginnen (in Application.class oder vor der ersten Verwendung).

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

Und dann können Sie protokollieren, was Sie wollen;

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

Und schließlich zeigt Ihnen die Ausgabe alles, was Sie wollen (Klassenname, Methodenname, Ankerlink, Nachricht).

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


0

Kürzlich fand ich diesen Ansatz zum Schreiben von Protokollen in Android, was ich super toll finde.

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);
        }
    }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.