Protokolle für Java-Stapeljobs anzeigen
Wenn Sie Java-Stapeljobs in WebSphere Application Server Liberty ausführen, wird für jeden Job ein Protokoll geschrieben.
Die Protokolle werden in der folgenden Verzeichnisstruktur erstellt:
Protokollverzeichnis/joblogs/Jobname/Datum/instance.Jobinstanz-ID/execution.Ausführungs-ID
Weitere Informationen zum Abrufen oder Löschen von Jobprotokollen mit der REST-API finden Sie in der Dokumentation zur REST-API-Verwaltung.
Jobprotokollierung konfigurieren
Die Protokollierung von Stapeljobs kann mit dem Konfigurationselement <batchJobLogging> konfiguriert werden: <batchJobLogging enabled="true" maxRecords="1000" />.
Das Attribut maxRecords gibt die Anzahl der Datensätze an, die in einen Jobprotokollabschnitt geschrieben werden, bevor die Datensätze im nächsten Abschnitt fortgesetzt werden.
Die Stapelfunktion verwendet eine Protokollfunktion (Logger) mit dem Namen com.ibm.ws.batch.JobLogger, um bestimmte Stapelnachrichten nur im Jobprotokoll aufzuzeichnen. Beispiele hierfür sich Nachrichten zum Lebenszyklus und Prüfpunktnachrichten. Die Protokollfunktion schreibt keine Nachrichten in das Serverprotokoll. Standardmäßig ist die Protokollfunktion für Nachrichten der Ebene Level.FINE aktiviert. Sie können die Ebene der Protokollfunktion konfigurieren, indem Sie sie in der Tracespezifikation des Servers festlegen, z. B. <logging traceSpecification="*=info:com.ibm.ws.batch.JobLogger=all" />.
Protokollnachrichten, die vom Job-Thread geschrieben werden, einschließlich der Nachrichten, die von der Laufzeit und vom Anwendungscode geschrieben werden, werden sowohl in das Jobprotokoll als auch in das Serverprotokoll geschrieben.
Die Dateien System.out und System.err werden nur in das Serverprotokoll, jedoch nicht in das Jobprotokoll geschrieben.
Partitionierte Schritte
Partitionierte Schritte haben Unterverzeichnisse für die einzelnen Partitionen. Die Protokolldateien im Verzeichnis Ausführungs-ID enthalten Einträge aus dem Thread, der den Job der höchsten Ebene ausführt. Die Jobprotokolle für die Partitionen werden in der folgenden Struktur gespeichert:
Protokollverzeichnis/joblogs/Jobname/Datum/instance.Jobinstanz-ID/execution.Ausführungs-ID/Name des partitionieren Schritts/Partitionsnummer
Aufgeteilte Datenflüsse
Wenn eine Aufteilung des Datenflusses im Job stattfindet, werden Unterverzeichnisse erstellt, um die Ausgabe aus dem Thread jedes Datenflusses zu erfassen. Die Protokolldateien, die sich direkt unter dem Verzeichnis Ausführungs-ID befinden, enthalten Einträge aus dem Thread, der den Job der höchsten Ebene ausführt. Die Jobprotokolle für die einzelnen Datenflussthreads werden mit der folgenden Struktur gespeichert:
Protokollverzeichnis/joblogs/Jobname/Datum/instance.Jobinstanz-ID/execution.Ausführungs-ID/ID der Aufteilung/Datenfluss-ID
Jobprotokollereignisse
Sind Stapeljobereignisse aktiviert, werden Jobprotokollereignisse veröffentlicht, wenn ein Jobprotokollabschnitt abgeschlossen und ein Job beendet wird (Status stopped, failed oder completed). Die Jobprotokollereignisnachrichten enthalten mehrere JSON-Eigenschaften, die Sie beim Identifizieren der Nachricht mit dem tatsächlichen Jobprotokolldateiinhalt unterstützen.
//Abgerufene Jobprotokollereignisnachricht
Message msg
//Nachricht in eine Textnachricht konvertieren
TextMessage txtMsg = (TextMessage) msg;
//Text in der Nachricht in ein JSON-Objekt konvertieren
JsonObject jobLogEventObject = Json.createReader(new StringReader(txtMsg.getText())).readObject();
//Jobprotokolltextinhalt als Beispiel aus dem JSON-Objekt extrahieren
JsonArray logContentArray = jobLogEventObject.getJsonArray("contents");
Weitere Informationen zum Aktivieren von Stapeljobereignissen finden Sie unter Veröffentlichung von Stapeljobereignissen ermöglichen.