High Performance Extensible Logging (HPEL)
High Performance Extensible Logging (HPEL) ist eine Protokoll- und Tracefunktion, die mit WebSphere Application Server bereitgestellt wird.
Übersicht

HPEL
ist ein praktischer Mechanismus für das Speichern von und den Zugriff auf
Protokoll-, Trace-, System.err- und System.out-Informationen, die von einem Anwendungsserver oder von Ihren
Anwendungen erzeugt werden.
HPEL ist eine Alternative zur Basisprotokoll- und -tracefunktion, die die JVM-Protokolle,
den Diagnosetrace und die Serviceprotokolldateien mit den gängigen Namen
SystemOut.log/SystemErr.log, trace.log und activity.log bereitstellen.
HPEL
ist ein praktischer Mechanismus für das Speichern von und den Zugriff auf
Protokoll-, Trace-, System.err- und System.out-Informationen, die von einem Anwendungsserver oder von Ihren
Anwendungen erzeugt werden.
Er stellt eine Alternative zu den vorhandenen Protokoll- und Tracefunktionen dar, die auf der z/OS-Plattform angeboten werden und JES-, LogStreams- und Component Trace-Funktion, hierarchisches Dateisystem oder andere Funktionen nutzen.
HPEL-Protokoll und Tracespeicher
HPEL stellt ein Protokolldatenrepository, ein Tracedatenrepository und eine Textprotokolldatei bereit. Sehen Sie sich die folgende Abbildung an, um zu verstehen, wie Anwendungen und Anwendungsserver Protokoll- und Traceinformationen speichern.

- HPEL-Protokolldatenrepository
Das Protokolldatenrepository ist eine Speichereinrichtung für Protokolldatensätze. Protokolldaten sind gewöhnlich für Administratoren bestimmt. Dazu gehören alle Informationen, die Anwendungen oder der Server in System.out, System.err oder java.util.logging auf den Stufen "Detail" und höher (einschließlich Detail, Config, Info, Audit, Warning, Severe, Fatal sowie allen angepassten Stufen der Stufe "Detail" oder höher) schreiben.
- HPEL-Tracedatenrepository
Das Tracedatenrepository ist eine Speichereinrichtung für Tracedatensätze. Tracedaten sind gewöhnlich für Anwendungsprogrammierer oder für das Supportteam von WebSphere Application Server bestimmt. Dazu gehören alle Informationen, die Anwendungen oder der Server in java.util.logging auf den Stufen unterhalb der Stufe "Detail" (einschließlich Fine, Finer, Finest sowie allen angepassten Stufen unterhalb der Stufe "Detail") schreiben.
Unterstützte Konfigurationen: Protokoll- und Traceinhalt, der in die veraltete JRAS-Protokollierungs-API geschrieben wird, wird ebenfalls in die Protokoll- und Tracedatenrepositorys eingeschlossen. Einige Protokollierungs-APIs wie Jakarta Commons Logging können auch so konfiguriert werden, dass sie ihre Protokoll- und Tracedaten an java.util.logging weiterleiten, sodass ihre Ausgabe ebenfalls im Protokoll- bzw. Tracedatenrepository gespeichert wird. sptcfg
- HPEL-Textprotokoll
-
Die Textprotokolldatei ist eine einfache Textdatei für Protokoll- und Tracedatensätze. Die Textprotokolldatei wird primär als Option bereitgestellt, die Sie verwenden können, um den Protokollinhalt lesen zu können, ohne das Befehlszeilentool "LogViewer" ausführen zu müssen, um den Inhalt des Protokolldatenrepositorys in einfachen Text zu konvertieren.
Die Textprotokolldatei enthält keinen Inhalt, der nicht auch im Protokolldaten- bzw. Tracedatenrepository gespeichert ist. Sie können das Textprotokoll inaktivieren, um die Serverleistung zu verbessern. Das Textprotokoll kann so konfiguriert werden, dass Traceinhalt für Debugzwecke aufgezeichnet wird.
Die Textprotokolldatei enthält nur Protokolleinträge, die vom Steuerprozess generiert werden und nicht solche aus Servant- oder Adjunctprozessen. Unter z/OS werden Anwendungsprotokolleinträge nicht als solche in das Textprotokoll geschrieben. Um Protokoll- oder Tracedaten für alle Anwendungsserverprozesse anzuzeigen, verwenden Sie das LogViewer-Befehlszeilentool oder das HPEL-Protokollanzeigetool in der Administrationskonsole.
Fehler vermeiden: Das Schreiben von Tracedaten in das Textprotokoll ist ein leistungsintensiver Vorgang.gotcha
Protokoll- und Traceleistung
HPEL wurde
entworfen und getestet und biet eine signifikant höhere Leistung als die vorhandene
Basisprotokoll- und -tracefunktion.
Ein Ergebnis ist, dass der Anwendungsserver mit aktiviertem Trace
ausgeführt werden kann und gleichzeitig die Auswirkungen auf die Leistung
im Vergleich mit der Traceerstellung derselben Komponenten, die die Basisprotokollierung
verwenden, verringert werden können.
Ein weiteres Ergebnis ist, dass Anwendungen, die häufig in die Protokolle schreiben, mit HPEL schneller
ausgeführt werden können.
Es gibt eine Reihe von Faktoren, die zur Gesamtleistung der HPEL-Protokollierung und -Traceerstellung beitragen.
- Protokoll- und Traceereignisse werden jeweils nur an einem Ort gespeichert.
Protokollereignisse, System.out und System.err werden im Protokolldatenrepository gespeichert. Traceereignisse werden im Tracedatenrepository gespeichert. Wenn die Textprotokolldatei inaktiviert ist, kann HPEL Protokoll- und Traceinhalt nur in diese Repositorys schreiben. Durch das Speichern jedes Typs von Ereignis an einer zentralen Stelle wird sichergestellt, dass keine Leistung für redundante Datenspeicherung verschwendet wird.
Protokollereignisse und optional Traceereignisse werden in die Textprotokolldatei geschrieben, sofern diese aktiviert ist. Da diese Daten darüber hinaus auch in den Protokoll- und Tracedatenrepositorys gespeichert wird, ist der Inhalt der Textprotokolldatei redundant. Das Textprotokoll ist für Benutzer zweckdienlich, die das Befehlszeilentool "LogViewer" nicht ausführen möchten, um ihre Protokolle und Traces anzuzeigen. Sie können das Textprotokoll jedoch inaktivieren, wenn diese Option nicht benötigt wird.
- Protokoll- und Trace-Repositorys werden nicht prozessübergreifend gemeinsam genutzt.
Die Synchronisation von Aktivitäten zwischen Prozessen kann zu Leistungseinbußen bei allen beteiligten Prozessen führen. Mit HPEL hat jeder Serverprozess ein eigenes Protokolldatenrepository, ein eigenes Tracedatenrepository und eine eigene Textprotokolldatei. Da diese Dateien von Prozessen nicht gemeinsam genutzt werden, muss die Laufzeitumgebung des Servers nicht mit anderen Prozessen synchronisiert werden, wenn Daten in diese Ziele geschrieben wird.
- Daten werden nur bei Bedarf formatiert.
Das Formatieren der Daten zum Lesen für einen Benutzer verbraucht Prozessorzeit. Anstatt Protokollereignis- und Traceereignisdaten zur Laufzeit zu formatieren, werden HPEL-Protokoll- und -Tracedaten schneller in einer proprietären Binärdarstellung gespeichert. Dies verbessert die Leistung der Protokoll- und Tracefunktion. Durch die Verzögerung der Protokoll- und Traceformatierung bis zur Ausführung von LogViewer werden Abschnitte des Protokolls bzw. Trace, die niemals angezeigt werden, auch niemals formatiert.
Sie können die Textprotokolldatei, in der die Protokolldaten und Tracedaten in einem lesbaren Textformat gespeichert werden, aktivieren.
Bewährtes Verfahren: Inaktivieren Sie das Textprotokoll, wenn die Leistung Ihres Servers Ihr Hauptanliegen ist oder wenn Sie kein Textprotokoll verwenden möchten.bprac
- 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. HPEL stellt gepufferte Protokoll- und Tracedaten bereit, bevor diese 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 sich der Puffer nicht innerhalb dieser Zeit füllt, wird der Puffer automatisch auf die Platte geschrieben, um sicherzustellen, dass die Protokolle die aktuellsten Informationen enthalten.
Unterstützte Konfigurationen: Die Größe des Puffers kann mit der Systemeigenschaft HPEL.BUFFER.SIZE gesteuert werden. Das Intervall, in dem der Puffer auf die Platte geschrieben wird, kann mit der Systemeigenschaft HPEL.FLUSH.PERIOD.SECS gesteuert werden.sptcfg
Verwaltung von Protokollen und Traces
HPEL ist so gestaltet, dass es 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 (LogViewer) zugänglich, wodurch mögliche Unklarheiten bezüglich der Datei, auf die für bestimmte Inhalte zugegriffen werden muss, vermieden werden.
- Aus Protokoll- und Tracedatenrepositorys lesen
Die Protokoll- und Tracedatenrepositorys werden in einem proprietären Format von WebSphere Application Server gespeichert und können mithilfe von Textdateieditoren wie Notepad oder VI nicht gelesen werden. Mit dem Befehl LogViewer können Sie die Protokoll- und Tracedatenrepositorys in ein einfaches Textformat kopieren.
- Der HPEL-Befehl "LogViewer"
Der HPEL-Befehl "LogViewer" ist ein einfach zu verwendendes Befehlszeilentool, mit dem HPEL-Benutzer die Protokoll- und Tracedatenrepositorys bearbeiten können. LogViewer stellt Filter- und Formatierungsoptionen bereit, die die Suche wichtiger Inhalte in den Protokoll- und Tracedatenrepositorys vereinfachen. Ein Benutzer kann beispielsweise alle Fehler und Warnungen filtern und anschließend alle Protokoll- und Traceeinträge, die innerhalb von 10 Sekunden nach einer Schlüsselfehlernachricht in demselben Thread ausgegeben wurden.
- Mit dem Erweiterungsinhalt von Protokoll- und Tracesätzen filtern
Sie können das Befehlszeilentool LogViewer verwenden, um Datensätze basierend auf Erweiterungsinhalten von Protokoll- und Tracesätzen zu filtern. Der Anwendungsserver generiert automatisch die Erweiterung appName für jeden Protokoll- und Tracesatz, der zu einer Java-EE-Anwendung (Java™ Platform, Enterprise Edition) gehört, wodurch der Name dieser Anwendung angezeigt wird. Außerdem generiert der Anwendungsserver automatisch die Erweiterung requestID für jeden Protokoll- und Tracesatz, der während der Verarbeitung bestimmter Anforderungstypen (for example HTTP or JMS requests) erzeugt wird, wodurch die eindeutige ID dieser Anforderung angezeigt wird.
Die Erweiterung requestID wird nur dann an Protokoll- und Tracesätze angehängt, wenn ein komponentenübergreifender Trace aktiviert ist. Außerdem bietet HPEL für Entwickler die Funktion, angepasste Erweiterungen mithilfe einer Protokolleintrags-Kontext-API (com.ibm.websphere.logging.hpel.LogRecordContext) an Protokoll- und Tracesätze zu hängen.
- HPEL in der Administrationskonsole
Die Administrationskonsole enthält Seiten, mit denen HPEL-Administratoren Folgendes ausführen können: administrators to:
- HPEL-Protokolldatenrepository konfigurieren
- HPEL-Tracedatenrepository konfigurieren
- HPEL-Textprotokolldatei konfigurieren
- Inhalt der HPEL-Protokoll- und -Tracedatenrepositorys anzeigen
- Protokolldetailstufen für die Protokollierung und Traceerstellung anzeigen und festlegen
Zur Verwendung dieser Funktionen klicken Sie in der Administrationskonsole auf den Link
.
Entwicklungsressourcen
HPEL wurde entworfen, um die Arbeit mit Protokoll- und Traceinhalten flexibler und effektiver zu machen, als es mit der Basisprotokollierungsfunktion möglich ist. 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 die Beschreibung des HPEL-Befehls "LogViewer"), oder Entwickler können leistungsfähige Protokollverarbeitungsprogramme, die die HPEL-API nutzen, schreiben.
- Scripte und Java-Programme lesen aus den Protokoll- und Tracedatenrepositorys
- Entwickler und Scriptautoren können unter mehreren Optionen für das Lesen der Protokoll- und Tracedatenrepositorys wählen:
- Lokal oder fern über ein wsadmin-Script unter Verwendung der JMX-MBean "HPELControlService"
- Lokal oder fern über ein Java-Programm unter Verwendung der JMX-Bean "HPELControlService"
- Lokal aus einem Java-Programm unter Verwendung der API com.ibm.websphere.logging.hpel API
- HPEL-bezogene JMX-MBeans
Es wird eine MBean-Schnittstelle bereitgestellt, die den Fernzugriff auf den Inhalt des HPEL-Repositorys vereinfacht. Ein Entwickler kann beispielsweise ein JMX-Clientprogramm schreiben, um Protokollinhalte aus ihrer Zelle von WebSphere Application Server zu lesen. Diese Schnittstelle gehört zur MBean "HPELControlService". Einzelheiten zur Schnittstelle für den Fernlesezugriff auf das HPEL-Protokoll finden Sie in der Dokumentation der MBean-Schnittstelle.
Tabelle 1. JMX-MBeans im Zusammenhang mit HPEL. Die JMX-MBeans gehören zur HPEL-Operation. JMX-MBean Beschreibung HPELControlService Bietet Operationen im Zusammenhang mit der Konfiguration der Protokoll- oder Tracedetailebene des Servers, mit der Anzeige der Protokollkomponentenregistry und mit der Abfrage der Protokoll- und Trace-Repositorys. HPELLogDataService Bietet Operationen im Zusammenhang mit der Konfiguration des Protokolldatenrepositorys des Servers. HPELTraceDataService Bietet Operationen im Zusammenhang mit der Konfiguration des Tracedatenrepositorys des Servers. HPELTextLogService Bietet Operationen im Zusammenhang mit der Konfiguration der Textprotokolldatei des Servers. RasLoggingService Wird nur für die JMX-Benachrichtigung von Protokollereignissen verwendet. Wenn Sie HPEL anstelle der Basisprotokollierung für die Protokoll- und Traceerstellung verwenden, wird die JMX-MBean "TraceService" für Protokolle und Traces nicht verwendet.
- HPEL-API
Es wird eine API bereitgestellt, die Entwicklern die Entwicklung von Tools für das Lesen von Inhalten aus den HPEL-Protokoll- und -Tracerepositorys erleichtert. Ein Entwickler kann beispielsweise ein Java-Programm schreiben, das den Protokoll- und Traceinhalt durchsucht, um alle Nachrichten-IDs zu finden, deren Nachrichten-IDs einer bekannten Liste wichtiger Nachrichten-IDs entsprechen. 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 Tracesätzen
Entwickler können HPEL einsetzen, um angepasste Erweiterungen mithilfe einer Protokolleintrags-Kontext-API (com.ibm.websphere.logging.hpel.LogRecordContext) an Protokoll- und Tracesätze zu hängen. Wenn HPEL Protokoll- und Tracesätze speichert, werden alle Erweiterungen im Protokollsatzkontext im selben Thread eingeschlossen. Zum Beispiel kann ein Entwickler einen Servletfilter schreiben, um dem Protokollsatzkontext wichtige HTTP-Anforderungsparameter hinzuzufügen. Bei der Ausführung des Servlets fügt HPEL diese Erweiterungen dann jedem Protokoll- und Tracesatz, der im selben Thread erzeugt wurde, hinzu.
Wie auch bei anderen Protokoll- und Tracesatzfeldern können Entwickler über die HPEL-API auf die Datensatzerweiterung zugreifen. Das ist für den Fall nützlich, in dem Tools geschrieben werden, die aus Protokoll- und Tracerepositorys lesen. Entwickler können außerdem die Protokollsatzkontext-API nutzen, um auf Erweiterungen in angepassten Protokollhandlern, Filtern und Formatierungsprogrammen während der Ausführung zuzugreifen.