Liberty: Binärprotokollierung
Die Binärprotokollierung ist eine Protokoll- und Tracefunktion mit hoher Leistung, die auf der HPEL-Technologie (High Performance Extensible Logging) in WebSphere Application Server Traditional basiert.
Überblick
Die Binärprotokollierung ist ein praktisches Verfahren, mit dem Sie Protokoll-, Trace-, System.err- und System.out-Daten, die vom Anwendungsserver oder von Ihren Anwendungen erzeugt werden, speichern und aufrufen können. Sie stellt eine Alternative zur Standardprotokoll- und -tracefunktion dar, die die JVM-Protokoll- und -Diagnosetracedateien mit dem Namen messages.log bzw. trace.log bereitstellt.
Protokoll- und Tracedateien speichern
Die Binärprotokollierung stellt ein Protokolldatenrepository und ein Tracedatenrepository bereit. Sehen Sie sich die folgende Abbildung an, um zu verstehen, wie Anwendungen und Anwendungsserver Protokoll- und Traceinformationen speichern.

- Protokolldatenrepository
Das Protokolldatenrepository ist eine Speichereinrichtung für Protokolldatensätze. Protokolldaten sind gewöhnlich für Administratoren bestimmt. Dazu gehören alle Informationen, die die Anwendungen und der Server in System.out und System.err schreiben, alle Informationen der Stufe "LOG_INFO" und höher (einschließlich LOG_INFO, LOG_WARNING und LOG_ERROR), die die Anwendungen und der Server in den OSGi-Protokollierungsservice schreiben, sowie alle Informationen der Stufe "Detail" und höher (einschließlich "Detail", "Config", "Info", "Audit", "Warning", "Severe", "Fatal" und angepasster Stufen), die die Anwendungen und der Server in java.util.logging schreiben.
- Tracedatenrepository
Das Tracedatenrepository ist eine Speichereinrichtung für Tracedatensätze. Tracedaten sind gewöhnlich für Anwendungsprogrammierer oder für das Support-Team von WebSphere Application Server bestimmt. Dazu gehören alle Informationen der Stufe LOG_DEBUG, die die Anwendungen und der Server in den OSGi-Protokollierungsservice schreiben, sowie alle Informationen der Stufen unterhalb von "Detail" (einschließlich "Fine", "Finer", "Finest" und angepasster Stufen), die die Anwendungen und der Server in java.util.logging schreiben.
Protokoll- und Traceleistung
Die Binärprotokollierung wurde entworfen und getestet, um eine signifikant höhere Leistung als die Standardprotokoll- und -tracefunktion bereitzustellen. Die Leistungseinbußen bei der Ausführung des Anwendungsservers mit aktiviertem Trace sind wesentlich geringer, wenn die Binärprotokollierung anstelle des Standardprotokoll- und Standardtraceframeworks. Außerdem werden Anwendungen, die häufig in die Protokolle schreiben, bei Verwendung der Binärprotokollierung schneller ausgeführt.
- Protokoll- und Traceereignisse werden jeweils nur an einer Stelle gespeichert
Protokollereignisse, System.out und System.err werden im Protokolldatenrepository gespeichert. Traceereignisse werden im Tracedatenrepository gespeichert. Durch das Speichern aller Ereignistypen an einer zentralen Stelle wird sichergestellt, dass keine Leistung für redundante Datenspeicherung verschwendet wird.
Anmerkung: Das Konsolenprotokoll muss in Fällen, in denen die Protokollierungsleistung von Bedeutung ist, inaktiviert werden. Alle Inhalte, die in das Konsolenprotokoll geschrieben werden, sind bereits im Protokolldatenrepository gespeichert.- Daten werden nur bei Bedarf formatiert
Die Formatierung von Daten für einen Benutzer erfordert Prozessorzeit. Die Speicherung von Protokoll- und -Tracedaten in einer proprietären Binärdarstellung verläuft schneller als die Formatierung von Protokollereignis- und Traceereignisdaten zur Laufzeit. Dies verbessert die Leistung der Protokoll- und Tracefunktion. Durch die Verzögerung der Protokoll- und Traceformatierung bis zur Ausführung des Befehls binaryLog werden Protokoll- bzw. Traceabschnitte, die niemals angezeigt werden, auch niemals formatiert.
- Protokoll- und Tracedaten werden vor dem Schreiben auf eine Platte gepuffert
Das Schreiben großer Datenblöcke auf eine Platte ist wesentlich effizienter als das Schreiben desselben Datenvolumens in kleinen Blöcken. Die Binärprotokollierung bietet die Möglichkeit, Protokoll- und Tracedaten zu puffern, bevor sie auf die Platte geschrieben werden. Standardmäßig werden Protokoll- und Tracedaten in einem 8-KB-Puffer gespeichert, bevor sie auf die Platte geschrieben werden. Wenn sich der Puffer innerhalb von 10 Sekunden füllt, wird der Puffer auf die Platte geschrieben. Wenn der Puffer nach Ablauf dieses 10-Sekunden-Zeitraums nicht voll ist, wird er automatisch auf die Platte geschrieben, um sicherzustellen, dass die Protokolle die aktuellsten Informationen enthalten.
Verwaltung von Protokollen und Traces
Die Binärprotokollierung ist so konzipiert, dass sie einfach zu konfigurieren und zu verstehen ist. Administratoren können beispielsweise ohne großen Aufwand den für Protokolle und Traces dedizierten Plattenspeicherplatz und die Aufbewahrungszeit für Protokoll- und Tracedatensätze konfigurieren und das Management des Protokoll- und Traceinhalts dem Server überlassen. Alle Protokoll-, Trace-, System.out- und System.err-Inhalte sind über einen einfach zu verwendenden Befehl (binaryLog) zugänglich. Dadurch werden mögliche Unklarheiten hinsichtlich des Inhalts der verschiedenen Dateien vermieden.
- Daten aus dem Protokolldatenrepository und dem Tracedatenrepository lesen
Das Protokolldatenrepository und das Tracedatenrepository werden in einem proprietären Format von WebSphere Application Server gespeichert und können nicht mithilfe von Textdateieditoren wie Notepad oder VI gelesen werden. Mit dem Befehl binaryLog können Sie das Protokolldatenrepository und das Tracedatenrepository in ein einfaches Textformat kopieren.
- Befehl "binaryLog"
Der Befehl binaryLog ist ein einfach zu verwendendes Befehlszeilentool, das Benutzer verwenden können, um mit dem Protokolldatenrepository und dem Tracedatenrepository zu arbeiten. binaryLog stellt Filter- und Formatierungsoptionen bereit, die die Suche wichtiger Inhalte im Protokolldatenrepository und im Tracedatenrepository vereinfachen. Ein Benutzer kann beispielsweise mit einem Filter alle Fehler und Warnungen suchen und anschließend einen weiteren Filter verwenden, um alle Protokoll- und Traceeinträge zu suchen, die innerhalb von 10 Sekunden nach einer wichtigen Fehlernachricht in demselben Thread aufgezeichnet wurden.
- Filterung mit Erweiterungsinhalten für Protokoll- und Tracedatensätze
Die Funktion für Binärprotokollierung bietet Entwicklern die Möglichkeit, Protokoll- und Tracedatensätzen über eine API für Protokolldatensatzkontexte (com.ibm.websphere.logging.hpel.LogRecordContext) angepasste Erweiterungen hinzuzufügen. Sie können das Befehlszeilentool binaryLog verwenden, um Datensätze basierend auf Erweiterungsinhalten von Protokoll- und Tracedatensätzen zu filtern.
Entwicklungsressourcen
Die Binärprotokollierung wurde konzipiert, um die Arbeit mit Protokoll- und Traceinhalten flexibler und effektiver zu machen, als es mit der Standardprotokollierungsfunktion möglich ist. Der Protokoll- und Traceinhalt kann ohne großen Aufwand gefiltert werden, sodass nur die Datensätze angezeigt werden, die von Interesse sind. Sie können die Befehlszeile verwenden (siehe Beschreibung des HPEL-Befehls binaryLog), oder Entwickler können die HPEL-API nutzen, um leistungsfähige Protokollverarbeitungsprogramme zu schreiben.

- Protokolldaten und Tracedaten lesen
Es wird eine API bereitgestellt, die Entwicklern die Entwicklung von Tools für das Lesen von Inhalten aus dem binären Protokollrepository und dem Trace-Repository erleichtert. Ein Entwickler kann beispielsweise ein Java™-Programm schreiben, das den Protokoll- und Traceinhalt durchsucht, um alle Nachrichten mit Nachrichten-IDs zu finden, die in einer bekannten Liste wichtiger Nachrichten-IDs enthalten sind. Diese API ist im Paket com.ibm.websphere.logging.hpel enthalten. Einzelheiten zur API für das Lesen von HPEL-Protokollen finden Sie in der API-Dokumentation.
- Erweiterbarkeit von Protokoll- und Tracedatensätzen
Entwickler können über eine API für Protokolldatensatzkontexte (com.ibm.websphere.logging.hpel.LogRecordContext) angepasste Erweiterungen zu Protokoll- und Tracedatensätzen hinzuzufügen. Wenn bei der Binärprotokollierung Protokoll- und Tracedatensätze gespeichert werden, sind alle Erweiterungen im Kontext des Protokolldatensatzes im selben Thread enthalten. Ein Entwickler kann beispielsweise einen Servletfilter schreiben, um wichtige HTTP-Anforderungsparameter zum Kontext des Protokolldatensatzes hinzuzufügen. Bei der Ausführung des Servlets fügt HPEL diese Erweiterungen dann jedem Protokoll- und Tracedatensatz, der im selben Thread erstellt wurde, hinzu.
Wie bei anderen Protokoll- und Tracedatensatzfeldern können Entwickler über die HPEL-API auf die Datensatzerweiterungen zugreifen. Dies ist bei der Entwicklung von Tools hilfreich, die Daten aus Protokoll- und Trace-Repositorys lesen sollen. Entwickler können die API für Protokollsatzkontexte auch verwenden, um zur Laufzeit auf Erweiterungen in angepassten Protokollhandlern, Filtern und Formatierungsprogrammen zuzugreifen.