檢視 Java 批次工作日誌
在 WebSphere Application Server Liberty 中執行 Java 批次工作時,會為每一項工作寫入日誌。
會以下列目錄結構來建立日誌:
log directory/joblogs/job name/date/instance.job instance ID/execution.execution ID
如需利用 REST API 來擷取或刪除工作日誌的相關資訊,請參閱 REST API 管理說明文件。
配置工作記載
您可以使用 <batchJobLogging> 配置元素 <batchJobLogging enabled="true" maxRecords="1000" />,來配置批次工作記載。
maxRecords 屬性指出寫入至工作日誌部分的記錄數目,一旦超過此記錄數目,就會將記錄寫到下一部分中。
批次特性會使用名稱是 com.ibm.ws.batch.JobLogger 的日誌程式,只將特定批次訊息記載到工作日誌中。比方說,像是工作生命週期訊息和檢查點訊息。日誌程式不會寫入至伺服器日誌。依預設,會針對 Level.FINE 訊息啟用日誌程式。您可以配置日誌程式的層次,作法是在伺服器的追蹤規格中指定它。例如,<logging traceSpecification="*=info:com.ibm.ws.batch.JobLogger=all" />。
只要是工作執行緒所寫入的日誌訊息,包括執行時期和應用程式碼所寫入的訊息,都會同時寫入至工作日誌和伺服器日誌中。
System.out 和 System.err 檔則只會寫入至伺服器日誌,不會寫入至工作日誌。
分割步驟
分割步驟對於每一個分割具有多個子目錄。execution ID 目錄中的日誌檔含有執行最上層工作之執行緒中的項目。分割的工作日誌會以下列結構儲存:
log directory/joblogs/job name/date/instance.job instance ID/execution.execution ID/name of partitioned step/partition number
分割流程
如果工作中出現分割流程,則會建立更多子目錄,以便擷取每一個流程之執行緒的輸出。直接位於 execution ID 目錄之下的日誌檔會包含執行最上層工作之執行緒中的項目。個別流程執行緒的工作日誌會以下列結構儲存:
log directory/joblogs/job name/date/instance.job instance ID/execution.execution ID/split ID/flow ID
工作日誌事件
如果啟用批次工作事件,當完成某一工作日誌部分時,以及當工作到達結束狀態時(例如 stopped、failed 或 completed),就會發佈工作日誌事件。工作日誌事件訊息含有多個 JSON 有效負載,有助於您識別訊息以及實際的工作日誌檔內容。
//The retrieved job log event message
Message msg
//Convert the Message to a TextMessage
TextMessage txtMsg = (TextMessage) msg;
//Convert the text in the message to a JsonObject
JsonObject jobLogEventObject = Json.createReader(new StringReader(txtMsg.getText())).readObject();
//Pull the job log text content from the JsonObject as an example
JsonArray logContentArray = jobLogEventObject.getJsonArray("contents");
如需啟用批次工作事件的相關資訊,請參閱啟用批次工作事件發佈。