2017-12-08 4 views
-2

Ich entwickle einfache Java-Event-Bibliothek und möchte mehr als ein Logging-System unterstützen. Ich habe eine Idee mit der Verwendung der eigenen Klasse namens LoggerBridge.Bridge für Logging-Systeme

public void setLogger(LoggerBridge bridge){ 

} 

public class LoggerBridge{ 

    public void log(Level, String){} 

    ... 

} 

Aber diese Lösung ist überhaupt nicht praktikabel, gibt es eine andere Möglichkeit, wie man dieses Ergebnis erreicht? Einige Brücke, die es unterstützt alle Arten von Logging-System?

+5

Sie haben diese schon gemacht, benutzen Sie zum Beispiel 'SLF4J'. Schreibe nicht deine eigenen. – Kayaman

+0

Was genau versuchen Sie zu erreichen? Für mich klingt die Idee, 'Level's zu verwenden, gut, das ist auch, was andere Logger-Bibliotheken tun (zum Beispiel' Log4j'). Sie müssen genauer bestimmen, was Sie erreichen möchten und warum Ihre derzeitige Lösung Sie nicht zufriedenstellt. – Zabuza

+0

"unterstützt alle Arten von Logging-System" ist ziemlich anspruchsvoll. – Henry

Antwort

0

Dies ist ein uraltes Problem und mehrere Logging-Fassaden wurden gemacht, damit Sie die Dinge in zum Beispiel Bibliotheken anmelden, ohne den Benutzer zu zwingen, den gleichen Logging-Framework verwenden Sie gewählt haben (oder versuchen, um mehrere Logging-Frameworks gut zusammenarbeiten zu lassen).

Einer der frühesten war commons-logging, die in diesen Tagen als veraltet angesehen wird, aber es gibt eine Menge älterer Bibliotheken, die es verwenden. Es kann zu Ihrem eigentlichen Logging-System überbrückt werden (siehe unten).

Neuere sind SLF4J. Diese sollten beim Schreiben einer Bibliothek verwendet werden, sodass Sie anstelle einer eigentlichen Protokollimplementierung die SLF4J-API programmieren.

A logging bridge ist, wenn Sie eine Bibliothek, die zum Beispiel verwendet log4J, aber Ihr anderer Code wird mit dem SLF4J mit Logback (eine ganz gewöhnlichen Kombination) sagen lassen. Die Bridge "fakes" ist die log4J-Bibliothek, wenn sie tatsächlich nur die Protokollierung an Ihre SLF4J+Logback-Kombination umleitet.