[JAVA] Richtige Protokollausgabemethode unter Android (Standardprotokollklasse vs AnkoLogger)

Hintergrund

Einführung von AnkoLogger, entwickelt von JetBrains als OSS für die Java-> Kotlin-Migration. Ich habe es versucht, aber selbst wenn ich ein ausführliches Protokoll und ein Debug-Protokoll ausgegeben habe, wurde es nicht in logcat von Android Studio ausgegeben. Bei der Untersuchung der Ursache habe ich festgestellt, dass ich das Verhalten der Standard-Log-Klasse "android.util.Log" und nicht das Problem von AnkoLogger falsch verstanden habe. ..

Protokollstufe und Verhalten jeder Bibliothek

Wenn ich nach meiner eigenen Erkenntnis "Log.d (TAG," foo ")" schreibe, wird das Protokoll ausgegeben, wenn die Protokollstufe debuggt oder niedriger ist (dh debuggen, ausführlich) und sich ausführlich in der Entwicklungsumgebung befindet. Ich habe mich gefragt, ob ich mir das Debug-Protokoll angesehen habe, weil die Protokollebene ausführlich war. Zusammenfassend war die Erkennung von ↑ falsch und die Standardprotokollstufe war info. Der Grund, warum das ausführliche / Debug-Protokoll ausgegeben wird, ist, dass selbst wenn Sie ** Log.d (TAG," foo ") schreiben, das Protokoll unabhängig von der Protokollstufe ** tatsächlich ausgegeben wird **. Es ist notwendig, die Protokollebene nach einer anderen Methode zu beurteilen und sie zu trennen. Sie muss mit der if-Anweisung wie folgt gesteuert werden. (Übrigens wird die Protokollstufe für jedes Tag festgelegt)

if ( Log.isLoggable(TAG, DEBUG) ) Log.d(TAG, "foo");

Warum ist es so eine redundante Spezifikation? ..

Auf der anderen Seite Anko Logger

debug("foo") //Das Tag ist standardmäßig der Name der aufrufenden Aktivität

Wenn Sie schreiben, wird die Protokollstufe intern bestimmt. Die Benutzerseite wird gemäß der Protokollebene ausgegeben, ohne eine if-Anweisung zu schreiben. Persönlich ist dies definitiv intuitiver. Dieselbe Frage wurde zum Thema Github gestellt, daher bin ich nicht der einzige, der die Spezifikationen der Standard-Log-Klasse missverstanden hat.

Zusammenfassung

Wenn Sie es erneut organisieren,

Aufgrund der Klarheit und Sicherheit des Codes bevorzuge ich persönlich die Verwendung von AnkoLogger. Wenn Sie Java verwenden oder keine nutzlosen abhängigen Bibliotheken einschließen möchten, möchten Sie möglicherweise eine AnkoLogger-ähnliche Standard-Log-Wrapper-Klasse erstellen.

Recommended Posts

Richtige Protokollausgabemethode unter Android (Standardprotokollklasse vs AnkoLogger)
Ich möchte die Protokollausgabe unter Android vereinfachen
Beispiel für eine Java-Standardprotokollausgabe