Java バッチ・ジョブのログの表示
WebSphere Application Server Liberty で Java バッチ・ジョブを実行している場合、ジョブごとにログが書き込まれます。
ログは、以下のディレクトリー構造で作成されます。
log directory/joblogs/job name/date/instance.job instance ID/execution.execution ID
REST API を使用したジョブ・ログの取得または削除について詳しくは、『REST API 管理 (REST API administration)』の資料を参照してください。
ジョブ・ロギングの構成
<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");
バッチ・ジョブ・イベントの有効化について詳しくは、『バッチ・ジョブ・イベント公開の有効化』を参照してください。