查看 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
作业日志事件
如果启用了批处理作业事件,那么在完成作业日志部分且作业转为已结束状态(例如,已停止、已失败或已完成)时,会发布作业日志事件。作业日志事件消息包含多个 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");
有关启用批处理作业事件的更多信息,请参阅“启用批处理作业事件发布”。