檢視 Java 批次工作日誌

在 WebSphere Application Server Liberty 中執行 Java 批次工作時,會為每一項工作寫入日誌。

會以下列目錄結構來建立日誌:

log directory/joblogs/job name/date/instance.job instance ID/execution.execution ID

小心: job name 變數是 JSL (XML) 文件內之 job 元素的 id 屬性。不一定需要與 JSL 檔的檔名相關。
日誌的命名以 part.1.log 開頭,必要時會輪換成新的日誌組件。依預設,工作日誌包含所有訊息,以及執行該工作執行的執行緒在伺服器中所記載的追蹤資訊。不會收集未記載在 java.util.logging 架構內的輸出。
重要: 如果無法建立新的日誌組件,請在沒有日誌的情況下,或採用現行日誌組件來進行批次嘗試,以繼續處理。

如需利用 REST API 來擷取或刪除工作日誌的相關資訊,請參閱 REST API 管理文件。

重要: 如果您使用 log4j API,使用 log4j 架構的應用程式可以透過 org.apache.log4j.jul.JULAppender,來參與批次工作記載。JULAppender 會將 log4j 日誌記錄轉遞至 java.util.logging 架構,以便在這個架構中收集它們來進行工作記載。

配置工作記載

您可以使用 <batchJobLogging> 配置元素 <batchJobLogging enabled="true" maxRecords="1000" />,來配置批次工作記載。

maxRecords 屬性指出寫入至工作日誌部分的記錄數目,一旦超過此記錄數目,就會將記錄寫到下一部分中。

批次特性會使用名稱是 com.ibm.ws.batch.JobLogger 的日誌程式,只將特定批次訊息記載到工作日誌中。舉例來說,像是工作生命週期訊息和檢查點訊息。日誌程式不會寫入至伺服器日誌。依預設,會針對 Level.FINE 訊息啟用日誌程式。您可以配置日誌程式的層次,作法是在伺服器的追蹤規格中指定它。例如,<logging traceSpecification="*=info:com.ibm.ws.batch.JobLogger=all" />

只要是工作執行緒所寫入的日誌訊息,包括執行時期和應用程式碼所寫入的訊息,都會同時寫入至工作日誌和伺服器日誌中。

System.outSystem.err 檔則只會寫入至伺服器日誌,不會寫入至工作日誌。

分割步驟

分割步驟對於每一個分割具有多個子目錄。execution ID 目錄中的日誌檔含有執行最上層工作之執行緒中的項目。分割的工作日誌會以下列結構儲存:

log directory/joblogs/job name/date/instance.job instance ID/execution.execution ID/name of partitioned step/partition number

重要: 系統會在 name of partitioned step 目錄中,為每一個分割建立一個目錄。

分割流程

如果工作中出現分割流程,則會建立更多子目錄,以便擷取每一個流程之執行緒的輸出。直接位於 execution ID 目錄之下的日誌檔會包含執行最上層工作之執行緒中的項目。個別流程執行緒的工作日誌會以下列結構儲存:

log directory/joblogs/job name/date/instance.job instance ID/execution.execution ID/split ID/flow ID

重要: 系統會在 split ID 目錄中,為每一個流程建立一個目錄。

工作日誌事件

如果啟用批次工作事件,當完成某一工作日誌部分時,以及當工作到達結束狀態時(例如 stoppedfailedcompleted),就會發佈工作日誌事件。工作日誌事件訊息含有多個 JSON 有效負載,有助於您識別訊息以及實際的工作日誌檔內容。

重要: JSON 有效負載是 JMS 訊息內文的一部分,如果要擷取,可將內文文字轉換成 JsonObject,並從該物件取回特定的 JSON 有效負載。
下列範例說明如何擷取工作日誌內文內容。
// 所擷取的工作日誌事件訊息
Message msg
//將訊息轉換成 TextMessage
TextMessage txtMsg = (TextMessage) msg;
//將訊息中的文字轉換成 JsonObject
JsonObject jobLogEventObject = Json.createReader(new StringReader(txtMsg.getText())).readObject();
//從 JsonObject 取回工作日誌文字內容,以作為範例
JsonArray logContentArray = jobLogEventObject.getJsonArray("contents");

如需啟用批次工作事件的相關資訊,請參閱啟用批次工作事件發佈


指示主題類型的圖示 參照主題



「時間戳記」圖示 前次更新: 2016 年 11 月 30 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=rwlp_batch_view_joblog
檔名:rwlp_batch_view_joblog.html