Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java-Protokollierung

Java-Protokollierung

In diesem Tutorial lernen wir Java Logging und seine verschiedenen Komponenten anhand von Beispielen kennen.

Java ermöglicht es uns, Protokollnachrichten und -dateien durch den Protokollierungsprozess zu erstellen und zu erfassen.

In Java erfordert die Protokollierung Frameworks und APIs. Java hat ein eingebautes Protokollierungs-Framework in java.util.logging Paket.

Wir können auch Frameworks von Drittanbietern wie Log4j, Logback und viele mehr für Protokollierungszwecke verwenden.


Java-Protokollierungskomponenten

Die folgende Abbildung stellt die Kernkomponenten und den Kontrollfluss der Java Logging API (java.util.logging ).

1. Logger

Die Logger Die Klasse stellt Methoden für die Protokollierung bereit. Wir können Objekte aus Logger instanziieren Klasse und ruft ihre Methoden für Protokollierungszwecke auf.

Nehmen wir ein Beispiel.

Logger logger = Logger.getLogger("newLoggerName");

Die getLogger() Methode des Logger Klasse wird verwendet, um einen neuen Logger zu finden oder zu erstellen . Das String-Argument definiert den Namen des Loggers.

Hier wird ein neuer Logger erstellt -Objekt oder gibt ein vorhandenes Logger zurück mit demselben Namen.

Es ist eine Konvention, einen Logger zu definieren nach der aktuellen Klasse mit class.getName() .

Logger logger = Logger.getLogger(MyClass.class.getName());

Hinweis: Diese Methode löst NullPointerException aus wenn der übergebene Name null ist .

Jeweils Logger hat eine Ebene, die die Wichtigkeit der Protokollnachricht bestimmt. Es gibt 7 grundlegende Protokollebenen:

Protokollebene (in absteigender Reihenfolge) Verwenden
SCHWER schwerwiegender Fehler
WARNUNG Warnmeldung, ein potenzielles Problem
INFO allgemeine Laufzeitinformationen
KONFIG Konfigurationsinformationen
FEIN allgemeine Entwicklerinformationen (Tracing-Meldungen)
FEINER detaillierte Entwicklerinformationen (Tracing-Meldungen)
FEINSTE sehr detaillierte Entwicklerinformationen (Tracing-Meldungen)
AUS Protokollierung für alle Ebenen ausschalten (nichts erfassen)
ALLE Protokollierung für alle Ebenen aktivieren (alles erfassen)

Jede Protokollebene hat einen ganzzahligen Wert, der ihren Schweregrad bestimmt, mit Ausnahme von zwei speziellen Protokollebenen OFF und ALL .


Nachricht protokollieren

Standardmäßig werden immer die obersten drei Protokollebenen protokolliert. Um ein anderes Level einzustellen, können wir den folgenden Code verwenden:

logger.setLevel(Level.LogLevel);

// example
logger.setLevel(Level.FINE);

In diesem Beispiel nur Level FINE und Ebenen darüber sind so eingestellt, dass sie protokolliert werden. Alle anderen Protokollmeldungen werden gelöscht.

Um nun eine Nachricht zu protokollieren, verwenden wir den log() Methode.

logger.log(Level.LogLevel, "log message");

// example
logger.log(Level.INFO, "This is INFO log level message");

Es gibt Kurzverfahren zum Protokollieren auf gewünschten Ebenen.

logger.info( "This is INFO log level message");
logger.warning( "This is WARNING log level message");

Alle Log-Anfragen, die das eingestellte Log-Level überschritten haben, werden dann an den LogRecord weitergeleitet .

Hinweis: Wenn das Level eines Loggers auf null eingestellt ist , seine Ebene wird von seinem übergeordneten Element geerbt und so weiter im Baum.


2. Filter

Ein Filter (sofern vorhanden) bestimmt, ob der LogRecord weitergeleitet werden soll oder nicht. Wie der Name schon sagt, filtert es die Logmeldungen nach bestimmten Kriterien.

Ein LogRecord wird nur dann vom Logger an den Loghandler und vom Loghandler an externe Systeme weitergegeben, wenn er die angegebenen Kriterien erfüllt.

// set a filter
logger.setFilter(filter);

// get a filter
Filter filter = logger.getFilter();

3. Handler (Appender)

Der Log-Handler oder die Appender erhalten den LogRecord und exportiert es an verschiedene Ziele.

Java SE bietet 5 integrierte Handler:

Handler Verwenden
StreamHandler schreibt in OutputStream
ConsoleHandler schreibt auf Konsole
FileHandler schreibt in Datei
SocketHandler schreibt auf entfernte TCP-Ports
MemoryHandler schreibt in den Speicher

Ein Handler kann den LogRecord übergeben einem Filter, um erneut zu bestimmen, ob es an externe Systeme weitergeleitet werden kann oder nicht.

Um einen neuen Handler hinzuzufügen, verwenden wir den folgenden Code:

logger.addHandler(handler);

// example
Handler handler = new ConsoleHandler();
logger.addHandler(handler);

Um einen Handler zu entfernen, verwenden wir den folgenden Code:

logger.removeHandler(handler);

// example
Handler handler = new ConsoleHandler();
logger.addHandler(handler);
logger.removeHandler(handler);

Ein Logger kann mehrere Handler haben. Um alle Handler zu erhalten, verwenden wir den folgenden Code:

Handler[] handlers = logger.getHandlers();

4. Formatierer

Ein Handler kann auch einen Formatter verwenden um den LogRecord zu formatieren Objekt in einen String, bevor Sie es in externe Systeme exportieren.

Java SE verfügt über zwei integrierte Formatierer :

Formatierer Verwenden
SimpleFormatter formatiert LogRecord zu besaiten
XMLFormatter formatiert LogRecord ins XML-Formular

Wir können den folgenden Code verwenden, um einen Handler zu formatieren:

// formats to string form
handler.setFormatter(new SimpleFormatter());

// formats to XML form
handler.setFormatter(new XMLFormatter());

LogManager

Der LogManager Objekt verfolgt die globalen Logging-Informationen. Es liest und verwaltet die Logging-Konfiguration und die Logger-Instanzen.

Der Protokollmanager ist ein Singleton, was bedeutet, dass nur eine Instanz davon instanziiert wird.

Um die Protokollmanagerinstanz zu erhalten, verwenden wir den folgenden Code:

LogManager manager = new LogManager();

Vorteile der Protokollierung

Hier sind einige der Vorteile der Protokollierung in Java.

  • hilft bei der Überwachung des Programmablaufs
  • hilft bei der Erfassung eventuell auftretender Fehler
  • bietet Unterstützung bei der Problemdiagnose und Fehlerbehebung

Java

  1. Java-Operatoren
  2. Java-Kommentare
  3. Java for-each-Schleife
  4. Java-Strings
  5. Java-Schnittstelle
  6. Anonyme Java-Klasse
  7. Java-Versuch-mit-Ressourcen
  8. Java-Anmerkungen
  9. Java-Assertionen
  10. Java-Vektor