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 管理 (REST API administration)』の資料を参照してください。

重要: log4j API を使用した場合、org.apache.log4j.jul.JULAppender を使用することで、log4j フレームワークを使用するアプリケーションがバッチ・ジョブ・ロギングに参加できます。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.out ファイルおよび System.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 ディレクトリーに 1 つのディレクトリーが作成されます。

分割フロー

ジョブで分割フローが発生した場合、さらにサブディレクトリーが作成され、各フローのスレッドからの出力が取り込まれます。execution ID ディレクトリー直下にあるログ・ファイルには、最上位ジョブを実行しているスレッドからの項目が含まれます。個別フロー・スレッドのジョブ・ログは、以下の構造で保管されます。

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

重要: フローごとに split ID ディレクトリーに 1 つのディレクトリーが作成されます。

ジョブ・ログ・イベント

バッチ・ジョブ・イベントが有効にされている場合、ジョブ・ログ・パートが完了したとき、および、 ジョブが終了状況 (stoppedfailedcompleted など) に入ったときに、 ジョブ・ログ・イベントが公開されます。ジョブ・ログ・イベント・メッセージには、 実際のジョブ・ログ・ファイル内容と一緒に、メッセージの特定に役立つ複数の JSON プロパティーが含まれています。

重要: それらの JSON プロパティーは JMS メッセージ本体の一部であり、 本体テキストを JsonObject に変換して、そのオブジェクトから特定の 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");

バッチ・ジョブ・イベントの有効化について詳しくは、『バッチ・ジョブ・イベント公開の有効化』を参照してください。


トピックのタイプを示すアイコン 参照トピック

ファイル名: rwlp_batch_view_joblog.html