Ausnahmen mit SLF4J protokollieren
1. Überblick
In diesem kurzen Tutorial zeigen wir, wie Ausnahmen in Java mithilfe derSLF4J-API protokolliert werden. Wir verwenden dieslf4j-simple-API als Protokollierungsimplementierung.
Sie können verschiedene Protokollierungstechniken in einem unsererprevious articlesuntersuchen.
2. Maven-Abhängigkeiten
Zuerst müssen wir unserenpom.xml die folgenden Abhängigkeiten hinzufügen:
org.slf4j
slf4j-api
1.7.25
org.slf4j
slf4j-simple
1.7.25
Die neuesten Versionen dieser Bibliotheken finden Sie aufMaven Central.
3. Beispiele
Normalerweise werden alle Ausnahmen mit der in der KlasseLoggerverfügbaren Methodeerror() protokolliert. Es gibt einige Variationen dieser Methode. Wir werden untersuchen:
void error(String msg);
void error(String format, Object... arguments);
void error(String msg, Throwable t);
Initialisieren wir zuerst dieLogger, die wir verwenden werden:
Logger logger = LoggerFactory.getLogger(NameOfTheClass.class);
Wenn wir nur die Fehlermeldung anzeigen müssen, können wir einfach hinzufügen:
logger.error("An exception occurred!");
Die Ausgabe des obigen Codes lautet:
ERROR packageName.NameOfTheClass - An exception occurred!
Das ist einfach genug. Um jedoch relevantere Informationen zur Ausnahme (einschließlich des Stack-Trace) hinzuzufügen, können wir schreiben:
logger.error("An exception occurred!", new Exception("Custom exception"));
Die Ausgabe wird sein:
ERROR packageName.NameOfTheClass - An exception occurred!
java.lang.Exception: Custom exception
at packageName.NameOfTheClass.methodName(NameOfTheClass.java:lineNo)
Wenn bei Vorhandensein mehrerer Parameter das letzte Argument in einer Protokollierungsanweisung eine Ausnahme darstellt, geht SLF4J davon aus, dass der Benutzer das letzte Argument anstelle eines einfachen Parameters als Ausnahme behandeln möchte:
logger.error("{}, {}! An exception occurred!",
"Hello",
"World",
new Exception("Custom exception"));
Im obigen Snippet wird die NachrichtStringbasierend auf den übergebenen Objektdetails formatiert. Wir haben geschweifte Klammern als Platzhalter fürString-Parameter verwendet, die an die Methode übergeben wurden.
In diesem Fall lautet die Ausgabe:
ERROR packageName.NameOfTheClass - Hello, World! An exception occurred!
java.lang.Exception: Custom exception
at packageName.NameOfTheClass.methodName(NameOfTheClass.java:lineNo)
4. Fazit
In diesem kurzen Lernprogramm haben wir herausgefunden, wie Ausnahmen mit der SLF4J-API protokolliert werden.
Die Codefragmente sind inGitHub repository verfügbar.