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");
일괄처리 작업 이벤트 사용에 대한 자세한 정보는 일괄처리 작업 이벤트 공개 사용을 참조하십시오.