Verwendung einen Logger in Java
In der Programmiersprache Java ist Logging
eine API, die es dem Benutzer ermöglicht, den von den einzelnen Klassen generierten Fehler nachzuvollziehen. Ein Logger hilft beim Echtzeit-Protokollierungsmechanismus, indem er Zeitstempel und die Endpunkte hinzufügt, an denen er aufgefüllt wird. Die API hilft bei der Verfolgung von Ereignissen als Aufzeichnung
eines Protokolls. Die Aufzeichnungen helfen dabei, die Ursache der aufgetretenen Probleme zu finden und das gleiche Ereignis später erneut zu generieren.
Dieser Artikel zeigt Ihnen eine Methode, um die Java-Protokolle besser zu nutzen.
Die Funktionen eines Loggers in Java
Der Logger und seine Funktion werden im folgenden Programm demonstriert.
package log_file;
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
public class AddLoggerInFile {
public static void main(String[] args) {
Logger logger = Logger.getLogger("MyLog");
FileHandler fileHandler;
try {
fileHandler = new FileHandler("src/main/resources/MyLogFile.txt");
logger.addHandler(fileHandler);
SimpleFormatter simpleFormatter = new SimpleFormatter();
fileHandler.setFormatter(simpleFormatter);
logger.info("Log to test");
} catch (SecurityException e) {
logger.info("Exception:" + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
logger.info("IO Exception:" + e.getMessage());
e.printStackTrace();
}
logger.info("Hi In the main class");
}
}
Im obigen Codeblock wird zunächst ein Logger instanziiert.
Die Klasse ist im Paket java.util.logging
vorhanden. Der getLogger
ist eine statische Methode der Klasse Logger
, die einen Logger erstellt, wenn er nicht mit dem angegebenen Namen im System vorhanden ist. Die Funktion else
gibt die vorhandene Logger-Instanz zurück, falls diese bereits vorhanden ist.
Die Funktion wirft NullPointerException
, wenn der angegebene Name der Nullwert ist. Sobald die Logger-Instanz instanziiert wurde, wird eine Datei-Handler-Instanz erstellt.
Die Klasse FileHandler
ist im Paket java.util.logging
enthalten und wird speziell für die Verarbeitung des mit der logger
-Instanz gedruckten Protokolls entwickelt und konfiguriert. Der Konstruktor FileHandler
initialisiert den Handler, um die Informationen in den angegebenen Dateinamen zu schreiben. Der Konstruktor übernimmt den Namen der Ausgabedatei als Parameter.
Im obigen Code wird ein relativer Pfad mit dem Dateinamen bereitgestellt. Die Größe ist in der Datei nicht definiert, da sie bis zu dem Limit erweitert werden kann, in dem die Protokolle eingehen. Der Konstruktor wirft IOException
, wenn der Compiler ein Problem beim Öffnen der Dateien hat. Es wirft SecurityException
, wenn ein Sicherheitsmanager keine LoggingPermission
hat, und IllegalArgumentException
, wenn das Muster ein leerer String ist.
Die Methode addHandler
bildet einen File-Handler ab, um die Logging-Meldungen in der Datei zu empfangen. Die Funktion ist vom Rückgabetyp void
, da sie keinen Wert zurückliefert. Stattdessen werden nur die Protokolle und Ereignisse verwendet. Es löst SecurityException
aus, wenn ein Sicherheitsmanager nicht genügend Logging-Berechtigungen hat.
Die Instanz SimpleFormatter
wird initiiert; die Klasse ist auch im Paket java.util.logging
vorhanden. Der Formatierer ermöglicht die automatische Formatierung der Protokolle mit der Eigenschaft logging.SimpleFormatter.format
. Diese Eigenschaft ermöglicht es, dass die Protokollnachrichten in einem definierten Format vorliegen und somit die Einheitlichkeit beibehalten wird.
Der setFormatter
ist eine Funktion, die einen Formatierer auf der Logger-Instanz setzt. Die info
ist eine Funktion in der Logger
-Klasse, um die INFO
-Log-Meldungen in die Datei zu drucken. In der Level-Klasse können verschiedene log levels
vorhanden sein. Je nach Verwendung können wir die Protokolle INFO
, DEBUG
, FINE
, CONFIG
und SEVERE
verwenden.
Die Protokollebenen
sind die Protokollierungsdetails, die den Schweregrad des Programmprotokolls definieren. Die Ebenen haben eine definierte Nummer und eine bestimmte Bedeutung. SEVERE
hat zum Beispiel einen Log-Wert von 1000
und zeigt den Ausfall im System an und muss sofort behoben werden.
Der Schweregrad tritt auf, wenn ein Netzwerkfehler oder die Datenbankkonnektivität verloren geht. Ebenso hat der Level WARNING
einen Wert von 900
und bezeichnet das potenzielle Risiko im System.
Unten ist die Ausgabe, die in der Standard-Konsolenausgabe und der Datei MyLogFile.txt
ausgefüllt wird.
Ausgabe:
Jul 04, 2021 12:05:29 AM log_file.AddLoggerInFile main
INFO: Log to test
Jul 04, 2021 12:05:29 AM log_file.AddLoggerInFile main
INFO: Hi In the main class
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn