Welches Android Logging Framework soll verwendet werden? [geschlossen]

Meine Frage scheint leicht zu beantworten zu sein, aber es gibt mehrere gute Lösungen. Ich wähle gerne die 'beste'.

Verfügbare Frameworks (zögern Sie nicht, weitere vorzuschlagen):AndrologSLF4J AndroidLog4J - AndroidFür und Wider:Androlog:Pro: Ähnlich wie beim Android-Protokollierungsframework gibt es nur geringfügige Änderungen am vorhandenen Code. Kann Absturzberichte mit mehr Details im Fehlerbericht senden (die Protokolle um die Ausnahme herum); Schöne ProtokolleCon: Kein Java "getLogger" -Standardansatz; Produktionskonfiguration durch Hochladen der Eigenschaftendatei auf die SD-Karte möglich; Ich muss die Init-Protokollierung manuell aufrufen. Sie müssen LOG_TAG wie Konstanten erstellen oder es hacken, um Log-Tag-Konstanten von Aspect zu erstellen, um das Standardverhalten zu erreichen: Tags sind die Klassennamen; Wenn die Protokollierung eine Geschäftsanforderung ist, müssen wir sie testen. Testen von statischen Aufrufen unter Android fast unmöglich; Logger kann nicht durch Framework injiziert werdenLog4J-Android:Pro: Standard-Anmeldemethode für Java; Kompatibel mit SLF4J; Kann Eigenschaftendateien analysieren;Con: Kein eingebautes Crash-Report-System; Scheint mir: Es wird nicht häufig verwendet, daher ist es möglicherweise gefährlich, es zu verwenden.SLF4J-Android:Pro: Scheint von mehr Leuten wie Log4J-Android entwickelt zu werden; Daslogger.debug("Some log message. Details: {}", someObject.toString()); ist eine gute und effektive Möglichkeit, Zeichenfolgenverkettungen zu überspringen, wenn der Logger ausgeschaltet ist. Leichte Logger-Bindung, an die delegiert wirdandroid.util.Log.Con: Automatisch generierte Protokoll-Tags mit einer Länge von <= 23 Zeichen aufgrund einer Längenbeschränkung für Protokoll-Tags auf der Android-Plattform (z. B.com.example.myapp.MyClass Tag übersetzt nachc*.e*.m*.MyClass), was für verschiedene Klassen zu demselben Protokoll-Tag führen kann (z.com.example.app.MyClass undcom.example.anotherapp.MyClass beide übersetzen nachc*.e*.a*.MyClass); Kein eingebautes Absturzmeldesystem.

Abgesehen davon mag ich Androlog-Verhalten, aber ich bin ein Java-Entwickler, der mit log4j / slf4j vertraut ist. Wir werden definitiv ein Crash-Report-System brauchen, aber es gibt mehrere Frameworks für Crash-Reports (neben dem Standard-Crash-Report für Android).

Ich kann einige davon kombinieren, zum Beispiel Log4J android verwenden, aber einen Appender erstellen, um das Androlog-Framework zu verwenden, aber früher oder später wird es ein Chaos sein, das vermieden werden sollte.

Vielen Dank für Ihre Vorschläge. Ich hoffe, dass die Ergebnisse dazu beitragen werden, andere in Zukunft zu entscheiden.

Bearbeiten: Wie unten erwähnt, kann ich zum Beispiel log4j-android mit slf4j kombinieren (was ich lieber mache, wenn ich log4j verwende, weil die Unterstützung für die Protokollformatierung ("{}", ...)), aber das tut es beantwortet die Frage nicht. Ich muss einen Rahmen auswählen, dann kann ich ihn mit der SLF4J-Fassade verzieren.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage