메시지 로거 중개 기본요소

메시지 로거 중개 기본요소를 사용하여 관계형 데이터베이스에 메시지를 저장합니다. 또는 사용자 정의 로깅 기능을 사용하여 다른 스토리지 매체에 쓸 수 있습니다.

소개

메시지 로거 중개 기본을 사용하여 메시지를 관계형 데이터베이스에 저장하거나, 사용자 정의 로깅 기능을 사용하는 경우 다른 스토리지 매체에 저장할 수 있습니다. 메시지 로거 중개 기본은 IBM 정의 데이터베이스 스키마(테이블 구조)를 사용하여 관계형 데이터베이스에 메시지를 로그합니다. 사용자 정의 로깅 기능을 사용하여 텍스트 파일과 같은 다른 저장영역 매체에 작성할 수도 있습니다.

메시지 로거 중개 기본은 서비스 메시지 오브젝트(SMO)의 XML 코드 변환 사본을 로그합니다. 기본 작동은 메시지 페이로드만 로그하는 것이지만 전체 SMO 또는 XPath 표현식으로 정의되는 SMO 파트를 로그하도록 중개 기본을 구성할 수 있습니다. 중개 기본은 메시지 컨텐츠와 함께 시간소인, 메시지 ID, 기본 인스턴스 이름, 중개 모듈 인스턴스 이름 및 SMO 버전 번호를 로그합니다.

관계형 데이터베이스를 사용하는 경우에는 로깅되는 메시지가 데이터베이스의 Message 열에 저장됩니다. 로그되는 기타 데이터는 이 주제의 나중에 설명하는 것처럼 적합한 표제를 갖는 열에 저장됩니다.

메시지 로거 중개 기본은 하나의 입력 터미널(in), 하나의 출력 터미널(out) 및 하나의 실패 터미널(fail)을 갖습니다. in 터미널은 메시지 승인을 위해 연결되고 다른 터미널은 메시지 전파를 위해 연결됩니다. 입력 메시지는 데이터베이스 또는 사용자 정의 로거(logger)에 로깅을 트리거하고 로깅에 성공하는 경우에는 out 터미널이 원본 메시지를 전파합니다. 입력 메시지 처리 중에 예외가 발생하는 경우 fail 터미널은 모든 예외 정보와 함께 원본 메시지를 전파합니다.

사용자 정의 로깅 구현은 java.util.logging 패키지를 기반으로 합니다.

세부사항

기본적으로 메시지 로거 중개 기본은 다음과 같이 작동합니다.
  • MSGLOG 테이블을 사용하여 CommonDB 데이터베이스에 로그합니다. 이 테이블은 데이터베이스 제품에 의해 판별되는 스키마 규정자에 위치합니다. 데이터베이스를 구성할 때 프로파일 작성 중에 기본 스키마 이름을 지정할 수 있습니다. 데이터베이스 유형에 맞는 기본 스키마 이름을 사용해야 합니다. 표 1은 메시지 로거 데이터베이스 테이블의 구조를 설명합니다. 자세한 정보는 런타임 문서를 참조하십시오.
  • JNDI 위치 jdbc/mediation/messageLog로 식별되는 CommonDB 데이터베이스에 로깅하고, 런타임 환경에서 jdbc/mediation/messageLog에 데이터 소스를 작성하며 이 데이터 소스는 CommonDB 데이터베이스를 나타냅니다. CommonDB 데이터베이스의 JNDI 위치는 jdbc/WPSDB입니다. jdbc/mediation/messageLog 데이터 소스는 jdbc/WPSDB 데이터 소스와 동일한 레벨에서 범위 지정됩니다.
표 1. 메시지 로거 데이터베이스 테이블 구조
데이터베이스 유형 기본 스키마 추가 정보
DB2 Universal <dbUserId>  
z/OS용 DB2 dbSchemaName 일반적으로 dbUserId와 동일한 데이터베이스 별명 이름입니다.
Oracle <dbUserId>  
SQL Server dbo dbo는 기본 스키마 이름입니다. DatabaseMetaData::getUserName()은 임베디드 드라이버의 경우에는 dbo를 리턴하고 Microsoft 드라이버의 경우에는 dbUserId를 리턴합니다.

요약하자면 버전 6.1.2 이상에서는 기본적으로 메시지 로거 중개 기본요소가 CommonDB를 사용하고 런타임 환경에서 jdbc/mediation/messageLog의 데이터 소스를 CommonDB 데이터베이스에 맵핑합니다.

마이그레이션(관계형 데이터베이스를 사용하는 경우에만 적용)

버전 6.1.0 이전에서는 메시지 로거 중개 기본이 CommonDB 데이터베이스를 사용하지 않습니다. 버전 6.1.0 이전에는 다음과 같습니다.
  • 분산 플랫폼에서 런타임 제품의 기본 설치가 독립형 Application Server와 로컬 Derby 데이터베이스 및 데이터 소스를 작성했습니다. 로컬 Derby 데이터베이스는 EsbLogMedDB라고 했습니다. 메시지 로거 중개 기본은 기본적으로 이 Derby 데이터베이스를 사용하도록 구성되었습니다.
  • z/OS®에서, 런타임 제품의 설치가 Application Server와 샘플 데이터베이스 및 데이터 소스를 작성했습니다. 메시지 로거 중개 기본은 Derby 또는 DB2® 데이터베이스를 사용하도록 구성할 수 있었습니다.
버전 6.1.0 이전에 메시지 로거 중개 기본을 사용했고 버전 6.1.x 이상으로 이동하는 경우 이전 위치에 저장된 모든 메시지가 해당 위치에 남아 있습니다. 메시지 로거 메시지를 위한 단일 위치를 유지하려는 경우 다음 조치 중 하나를 취할 수 있습니다.
  • 수동으로 이전 데이터를 CommonDB 데이터베이스에 이동하십시오.
  • 이전 데이터베이스를 계속 사용하십시오. 이전 위치를 사용하려는 경우 필요한 데이터 소스를 수동으로 구성해야 합니다.
런타임 환경에 혼합 셀이 있는 경우, 즉 일부 노드는 버전 6.1.0 이상이고 일부 노드는 버전 6.1.0 이하인 경우, 버전 6.1.0 이전의 노드는 다음 방법 중 하나로 작동합니다.
  • jdbc/mediation/messageLog 데이터 소스로 식별되는 데이터베이스에 계속 메시지 정보를 저장합니다.
  • jdbc/mediation/messageLog 데이터 소스가 식별한 데이터베이스에 메시지 정보 저장을 시작합니다.
6.1.0 이전 노드가 취하는 조치는 연합 프로세스 중에 노드가 JNDI 변경사항을 승인 또는 거부하도록 구성되었는지 여부에 따라 달라집니다. 노드 연합에 대한 자세한 정보는 런타임 문서를 참조하십시오.

사용법

메시지 로거 중개 기본을 사용하여 나중에 처리하는 메시지를 저장할 수 있습니다. 로그된 메시지는 다양한 용도로 사용할 수 있습니다. 예를 들어, 데이터 마이닝, 메시지 재생 또는 감사를 위해 로그된 메시지를 사용할 수 있습니다.

데이터가 XML로 로그되기 때문에 모든 XML 인식 응용프로그램에서 처리할 수 있습니다. DB2를 포함한 많은 데이터베이스가 데이터베이스 열에 포함되는 XML을 처리하는 내장 기능을 제공합니다. XML 처리 코드를 사용하여 포맷터 구현 클래스에서 XML을 조작할 수도 있습니다.

관계형 데이터베이스 사용

메시지 로거 중개 기본은 다음에 로그할 수 있습니다.
  • CommonDB 데이터베이스 또는 다른 데이터베이스일 수 있는 하나의 데이터베이스.
  • CommonDB 데이터베이스를 포함하여 한 데이터베이스의 다중 스키마. z/OS 시스템 전체에서 물리적 데이터베이스가 하나뿐이여야 하므로 z/OS의 경우 요로 스키마를 사용하면 유용합니다. 다중 스키마를 사용하면 한 데이터베이스에 보유되는 데이터를 구분할 수 있습니다. 예를 들어, 동일한 데이터베이스의 서로 다른 스키마에 테스트 데이터와 프로덕션 데이터가 있을 수 있습니다.
  • 다중 데이터베이스. 둘 이상의 메시지 로거 중개 기본이 서로 다른 데이터베이스에 로그할 수 있습니다. 예를 들어, DB2 데이터베이스와 Oracle 데이터베이스에 로그할 수 있습니다.
    • z/OS 시스템 전체에 물리적 데이터베이스가 하나뿐이여야 하므로 다른 시스템에 추가 데이터베이스가 있어야 합니다. 기타 z/OS 시스템, 분산 시스템에 다른 데이터베이스가 있을 수 있습니다.

사용자 정의 로깅 사용

각 메시지 로거 중개 기본에는 핸들러 구현 클래스가 지정되어 있어야 합니다. 여러 메시지 로거 중개 기본이 있는 경우 같은 핸들러 구현 클래스를 사용하거나 임의의 수의 적절한 핸들러 구현 클래스를 사용할 수 있습니다. 또는 포맷터 구현 클래스, 필터 구현 클래스 또는 둘 다를 제공할 수 있습니다.

기본적으로 기본 핸들러 구현 클래스는 java.io.tmpdir system 특성으로 정의하는 시스템 임시 디렉토리에 저장된 파일에 모든 메시지를 로깅합니다. 일반적으로 이 임시 디렉토리는 Unix 시스템에서는 /tmp 또는 /var/tmp이고, Windows 시스템에서는 C:\Documents and Settings\<user>\Local Settings\Temp입니다. 파일은 MessageLog.log라고 합니다.

기본 포맷터 구현 클래스에서 MessageFormat.format(<LogRecord>.getMessage(), <LogRecord>.getParameters())를 호출하는 리터럴 특성의 기본값은 다음과 같습니다.
  • {0}은(는) 시간소인 값 - logMessageParameters[0](으)로 대체됩니다.
  • {1}은(는) 메시지 ID 값 - logMessageParameters[1](으)로 대체됩니다.
  • {2}은(는) 중개 이름 값 - logMessageParameters[2](으)로 대체됩니다.
  • {3}은(는) 모듈 이름 값 - logMessageParameters[3](으)로 대체됩니다.
  • {4}은(는) 메시지 값 - logMessageParameters[4](으)로 대체됩니다.
  • {5}은(는) 버전 값 - logMessageParameters[5](으)로 대체됩니다.
각 메시지의 입력은 다음 예제와 유사합니다.
29/04/08 15:11,9A85B1D2-0119-4000-E000-13E4091443BC,MessageLogger1,CustomLogging,abc,6
사용자 정의 로깅을 사용하는 경우에는 로거 동작을 사용자 정의하기 위해 핸들러, 포맷터 및 필터 클래스를 구현해야 합니다. 이들 클래스 구현에 대한 자세한 정보는 Java 2 SDK, Standard Edition 문서를 참조하십시오. 기본 구현 클래스 이름은 다음과 같습니다.
  • 핸들러 특성: com.ibm.ws.sibx.mediation.primitives.logger.WESBFileHandler
  • 포맷터 특성: com.ibm.ws.sibx.mediation.primitives.logger.WESBFormatter
  • 필터 특성: com.ibm.ws.sibx.mediation.primitives.logger.WESBFilter
참고: 핸들러 클래스의 IBM® Business Process Manager implementation 구현에서는 핸들러의 flush() 또는 close() 메소드를 호출하지 않습니다.

관계형 데이터베이스 사용

메시지 로거 중개 기본은 다음에 로그할 수 있습니다.
  • CommonDB 데이터베이스 또는 다른 데이터베이스일 수 있는 하나의 데이터베이스.
  • CommonDB 데이터베이스를 포함하여 한 데이터베이스의 다중 스키마. z/OS 시스템 전체에서 물리적 데이터베이스가 하나뿐이여야 하므로 z/OS의 경우 요로 스키마를 사용하면 유용합니다. 다중 스키마를 사용하면 한 데이터베이스에 보유되는 데이터를 구분할 수 있습니다. 예를 들어, 동일한 데이터베이스의 서로 다른 스키마에 테스트 데이터와 프로덕션 데이터가 있을 수 있습니다.
  • 다중 데이터베이스. 둘 이상의 메시지 로거 중개 기본이 서로 다른 데이터베이스에 로그할 수 있습니다. 예를 들어, DB2 데이터베이스와 Oracle 데이터베이스에 로그할 수 있습니다.
    • z/OS 시스템 전체에 물리적 데이터베이스가 하나뿐이여야 하므로 다른 시스템에 추가 데이터베이스가 있어야 합니다. 기타 z/OS 시스템, 분산 시스템에 다른 데이터베이스가 있을 수 있습니다.

사용자 정의 로깅 사용

각 메시지 로거 중개 기본에는 핸들러 구현 클래스가 지정되어 있어야 합니다. 여러 메시지 로거 중개 기본이 있는 경우 같은 핸들러 구현 클래스를 사용하거나 임의의 수의 적절한 핸들러 구현 클래스를 사용할 수 있습니다. 또는 포맷터 구현 클래스, 필터 구현 클래스 또는 둘 다를 제공할 수 있습니다.

기본적으로 기본 핸들러 구현 클래스는 java.io.tmpdir system 특성으로 정의하는 시스템 임시 디렉토리에 저장된 파일에 모든 메시지를 로깅합니다. 일반적으로 이 임시 디렉토리는 Unix 시스템에서는 /tmp 또는 /var/tmp이고, Windows 시스템에서는 C:\Documents and Settings\<user>\Local Settings\Temp입니다. 파일은 MessageLog.log라고 합니다.

기본 포맷터 구현 클래스에서 MessageFormat.format(<LogRecord>.getMessage(), <LogRecord>.getParameters())를 호출하는 리터럴 특성의 기본값은 다음과 같습니다.
  • {0}은(는) 시간소인 값 - logMessageParameters[0](으)로 대체됩니다.
  • {1}은(는) 메시지 ID 값 - logMessageParameters[1](으)로 대체됩니다.
  • {2}은(는) 중개 이름 값 - logMessageParameters[2](으)로 대체됩니다.
  • {3}은(는) 모듈 이름 값 - logMessageParameters[3](으)로 대체됩니다.
  • {4}은(는) 메시지 값 - logMessageParameters[4](으)로 대체됩니다.
  • {5}은(는) 버전 값 - logMessageParameters[5](으)로 대체됩니다.
각 메시지의 입력은 다음 예제와 유사합니다.
29/04/08 15:11,9A85B1D2-0119-4000-E000-13E4091443BC,MessageLogger1,CustomLogging,abc,6
사용자 정의 로깅을 사용하는 경우에는 로거 동작을 사용자 정의하기 위해 핸들러, 포맷터 및 필터 클래스를 구현해야 합니다. 이들 클래스 구현에 대한 자세한 정보는 Java 2 SDK, Standard Edition 문서를 참조하십시오. 기본 구현 클래스 이름은 다음과 같습니다.
  • 핸들러 특성: com.ibm.ws.sibx.mediation.primitives.logger.WESBFileHandler
  • 포맷터 특성: com.ibm.ws.sibx.mediation.primitives.logger.WESBFormatter
  • 필터 특성: com.ibm.ws.sibx.mediation.primitives.logger.WESBFilter
참고: 핸들러 클래스의 IBM Business Process Manager implementation 구현에서는 핸들러의 flush() 또는 close() 메소드를 호출하지 않습니다.