Plattformübergreifende Java/Kotlin-Logging-Bibliothek

Meta-Hinweis: Ich kann das Kotlin-Tag nicht hinzufügen, da ich weniger als 300 Repräsentanten auf dieser Seite habe und es noch nicht existiert


Ich arbeite an einem plattformübergreifenden Projekt, das in Java und Kotlin geschrieben ist, und ich brauche eine anständige Protokollierung. System.outist meiner Meinung nach kein guter Weg, um mit der Protokollierung umzugehen, also suche ich nach einer plattformübergreifenden Protokollierungsbibliothek.

Insbesondere muss es für Desktop und Android funktionieren.

Die Projektstruktur selbst sieht folgendermaßen aus:

  • Projekt
    • Core – gemeinsam genutzter Code für Android und Desktop
    • Android ( implementation project(":core")), plattformspezifisches Android-Zeug (an Kern übergeben)
    • Desktop ( implementation project(":core")), plattformspezifisches Desktop-Zeug (an Core weitergegeben)

Das bedeutet, dass die Bibliothek sowohl auf Android als auch auf dem Desktop funktionieren muss, da der Großteil der Codebasis gemeinsam genutzt wird (plattformspezifische Aufrufe würden sie aus offensichtlichen Gründen zum Absturz bringen, weshalb sie entweder einen bestimmten Port für jede der Plattformen haben muss , unterstützen aber weiterhin eine zentrale Implementierung oder arbeiten universell mit beiden Plattformen).

Die Bibliothek muss nicht in Java oder Kotlin geschrieben sein, aber sie muss in einer JVM-Sprache (Java, Kotlin, Scala, Groovy usw.) geschrieben sein.

Antworten (1)

slf4j

Ich verwende die Java-Standardprotokollierungsbibliothek slf4j

  • 'org.slf4j:slf4j-api:1.7.7@jar' die in allen Codes enthaltene Protokollierungs-API
  • 'eu.lp0.slf4j:slf4j-android:1.7.7-1@jar' in der Android-App enthalten: Android-spezifische Implementierung von slf4j
  • 'org.slf4j:slf4j-simple:1.7.7' in Nicht-Android-App enthalten: j2se-Implementierung von slf4j
  • Ihre Android-App benötigt auch eine Datei "...\app\src\main\resources\eu\lp0\slf4j\android\config.properties", die konfiguriert, welche Logger aktiv sind
Ich habe jedoch 1.7.25für die Version ( 1.7.25-1für die Android-Version) verwendet. Es ist wahrscheinlich erwähnenswert, dass der Android-Port das Paket in geändert hat uk.uuid.slf4j. Ich habe etwas über slf4j recherchiert, als ich versuchte, die Eigenschaften herauszufinden, und bin über logback gestolpert (das als Desktop-"Port" des Loggers läuft), also verwende ich das anstelle von slf4j-simple. Obwohl die Protokolle immer noch slf4j verwenden, scheinen sie auf Android und Desktop ohne große Probleme zu funktionieren. Vielen Dank!
@Zoe Logback wurde vom selben Autor wie slf4j geschrieben. Die slf4j-Bibliothek soll als Fassade vor einem Logging-Framework dienen. Logback soll eine direkte Implementierung der slf4j-API sein. Daher ist Logback im Allgemeinen die beste Wahl für ein Greenfield-Projekt. Durch die Verwendung von Aufrufen von slf4j in Ihrer gesamten App geben Sie sich die Freiheit, zu einem anderen Framework zu wechseln, falls Logback jemals die Entwicklung einstellen oder Ihre Anforderungen nicht mehr erfüllen sollte. Andere Logging-Frameworks können über einen Adapter mit slf4j zum Laufen gebracht werden. Die slf4j-simple-Implementierung dient nur zum Einstieg, zum Lernen/zur Demo.