Verwendung einen Logger in Java

Rashmi Patidar 12 Oktober 2023
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 Patidar avatar Rashmi Patidar avatar

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

Verwandter Artikel - Java Logging