Ich möchte Protokolle in meinem Programm verwenden. Ich habe von java.util.logging gehört, weiß aber nicht, wie ich anfangen soll.
Gibt es Beispiele dafür, was ich mit der Protokollierung tun kann? Wie würde ich die Protokollierung in meinem eigenen Programm verwenden?
java
logging
java.util.logging
Renato Dinhani
quelle
quelle
Antworten:
java.util.logging
verhindert, dass Sie eine weitere JAR-Datei mit Ihrer Anwendung herumtragen müssen, und dies funktioniert gut mit einem guten Formatierer.Im Allgemeinen sollten Sie an der Spitze jeder Klasse Folgendes haben:
Dann können Sie einfach verschiedene Funktionen der Logger- Klasse verwenden.
Verwenden Sie
Level.FINE
für alles , was ist das Debuggen auf der obersten Ebene der Ausführungsablauf:Verwenden Sie
Level.FINER
/Level.FINEST
innerhalb von Schleifen und an Stellen, an denen Sie beim Debuggen grundlegender Ablaufprobleme möglicherweise nicht immer so viele Details sehen müssen:Verwenden Sie die parametrisierten Versionen der Protokollierungsfunktionen, um zu verhindern, dass Tonnen von String-Verkettungsmüll generiert werden, mit dem GC Schritt halten muss.
Object[]
wie oben ist billig, auf der Stapelzuordnung in der Regel.Protokollieren Sie bei der Ausnahmebehandlung immer die vollständigen Ausnahmedetails:
Ich übergebe hier immer
ex.toString()
die Nachricht, denn wenn ich dann in Protokolldateien "grep -n
" für "Exception
" bin, kann ich die Nachricht auch sehen. Andernfalls wird es in der nächsten Ausgabezeile angezeigt, die vom Stapelspeicherauszug generiert wird, und Sie müssen über ein erweitertes RegEx verfügen, um auch dieser Zeile zu entsprechen. Dadurch erhalten Sie häufig mehr Ausgabe, als Sie durchsehen müssen.quelle
.fine()
Methode zum Protokollieren, aber ich kann die Nachrichten scheinbar nicht anzeigen lassen ...Sollte Logger wie folgt deklarieren:
Wenn Sie also Ihren Klassennamen umgestalten, folgt dieser.
Ich habe hier einen Artikel über Java Logger mit Beispielen geschrieben .
quelle
Es gibt viele Beispiele und auch verschiedene Arten für die Protokollierung. Schauen Sie sich das Paket java.util.logging an.
Beispielcode:
Ohne Hardcodierung des Klassennamens :
quelle
Main.class.getSimpleName()
festlegen? Auf diese Weise wird das Refactoring-Tool es bei Bedarf ordnungsgemäß ändern, und dennoch ist es nicht so umständlich wie Ihre zweite Lösung.SLF4J ist eine bessere Protokollierungsfassade als Apache Commons Logging (ACL). Es verfügt über Brücken zu anderen Protokollierungsframeworks, sodass direkte Aufrufe von ACL, Log4J oder Java Util Logging über SLF4J erfolgen, sodass Sie die gesamte Ausgabe mit nur einer Protokollkonfigurationsdatei auf eine Protokolldatei leiten können, wenn Sie dies wünschen. Warum sollte Ihre Anwendung mehrere Protokollierungsframeworks verwenden? Weil Bibliotheken von Drittanbietern, die Sie verwenden, wahrscheinlich ältere, dies wahrscheinlich tun.
SLF4J unterstützt verschiedene Protokollierungsimplementierungen. Es kann alles an Standard-Out ausgeben, Log4J oder Logback verwenden (empfohlen gegenüber Log4J).
http://www.slf4j.org/
http://logback.qos.ch/
quelle
Ich persönlich würde minlog verwenden . Es ist sehr einfach, da die Protokollierungsklasse einige hundert Codezeilen umfasst.
quelle
Ich würde vorschlagen, dass Sie das Common Logging-Dienstprogramm von Apache verwenden. Es ist hoch skalierbar und unterstützt separate Protokolldateien für verschiedene Protokollierer. Siehe hier .
quelle