JRas 로깅 툴킷
JRas 로깅 툴킷은 관리자가 문제점을 진단하거나 애플리케이션 성능을 조정할 때 유용하게 사용할 수 있는 진단 정보를 제공합니다.

애플리케이션 개발, 배치, 유지보수는 복잡한 태스크입니다. 예를 들어, 실행 중인 애플리케이션이 예기치 않은 조건을 발견한 경우, 요청된 조작을 완료하지 못할 수 있습니다. 이 경우, 애플리케이션이 작업에 실패했음을 관리자에게 알리고 정보를 제공하도록 할 수 있습니다. 이 조치를 사용하면 관리자가 올바른 수정 조치를 취할 수 있습니다. 애플리케이션 개발자 또는 유지보수하는 사용자는 코드상의 버그에 따른 장애의 근본 원인을 판별하기 위해 실행 중인 애플리케이션의 경로와 관련된 상세 정보를 수집해야 합니다. 이러한 목적으로 사용되는 기능을 보통 메시지 로깅 및 진단 추적이라고 합니다.
메시지 로깅(메시지) 및 진단 추적(추적)은 개념적으로 매우 비슷하지만 중요한 차이점을 가지고 있습니다. 애플리케이션 개발자는 이러한 도구를 제대로 사용하려면 이런 차이점을 이해해야 합니다. 시작할 수 있도록 다음과 같은 메시지 및 추적의 조작 정의가 제공됩니다.
- 메시지
- 메시지 항목은 일반 사용자, 시스템 관리자 및 고객 지원 담당자가 볼 수 있는 정보용 레코드입니다. 메시지의 텍스트는 명확하고, 간결하고, 쉽게 이해할 수 있어야 합니다. 메시지는 보통 자국어로 번역되어 있어서 해당 언어로 표시됩니다. 메시지의 대상과 지속 시간을 구성할 수 있지만 메시지 로깅의 특정 레벨은 일반 시스템 조작에서 항상 사용 가능합니다. 성능 고려사항 및 메시지 저장소의 크기 때문에 메시지 로깅은 신중하게 사용해야 합니다.
- 추적
- 추적 항목은 서비스 엔지니어 또는 개발자가 사용하도록 개발된 정보 레코드입니다. 이 추적 레코드는 메시지 항목보다 훨씬 더 복잡하고, 상세할 수 있습니다. 추적 항목에 대한 자국어 지원은 보통 사용되지 않습니다. 추적 항목은 매우 어려우며, 해당 개발자 또는 서비스 담당자만이 이해할 수 있습니다. 일반 런타임 조작 중 추적 항목은 기록되지 않지만, 필요한 경우 진단 정보를 수집하기 위해 사용될 수 있습니다.
WebSphere® Application Server는 애플리케이션에서 사용할 수 있는 메시지 로깅 및 진단 추적 API를 제공합니다. 이 API는 IBM®에서 개발한 독립형 JRas 로깅 툴킷을 기반으로 합니다. 독립형 JRas 로깅 툴킷은 메시지 로깅 및 진단 추적 기본을 제공하는 인터페이스 및 클래스의 콜렉션입니다. 이러한 기본은 특정 제품 또는 플랫폼으로 제한되지 않습니다. 독립형 JRas 로깅 툴킷은 특성 파일에 기초한 로그 파일 구성을 포함하여, 보통 시스템 관리 지원이라고 하는 제한된 양의 지원을 제공합니다.
디자인에 따라, 독립형 JRas 로깅 툴킷에는 WebSphere Application Server 런타임으로의 통합이나 J2EE(Java 2 Platform, Enterprise Edition) 환경에서 사용하는 데 필요한 지원이 포함되어 있지 않습니다. 이러한 제한사항을 극복하기 위해, WebSphere Application Server는 이러한 단점을 해결하는 확장 클래스 세트를 제공합니다. 이런 확장 클래스의 콜렉션을 JRas 확장이라고 합니다. JRas 확장은 독립형 JRas 로깅 툴킷에서 채택한 인터페이스를 수정하지 않으며, 해당 구현 클래스를 제공합니다. 독립형 JRas 로깅 툴킷에서 채택한 개념 구조는 다음 절에 설명되어 있습니다. 이는 JRas 확장에도 동일하게 적용됩니다.
JRas 개념
이 절에는 독립형 JRas 로깅 툴킷에서 소개하는 중요한 개념 및 구성에 대한 기본 개요가 포함됩니다. 이 정보는 이 로깅 툴킷의 기능에 대한 포괄적인 개요 또는 사용 또는 프로그래밍 패러다임에 대한 자세한 설명을 포함하지는 않습니다. 코드 예를 포함한 자세한 정보는 로깅 툴킷을 구성하는 다양한 인터페이스 및 클래스에 대한 API 문서에 포함된 JRas 확장 및 해당 하위 주제를 참조하십시오.
- 이벤트 유형
- 독립형 JRas 로깅 툴킷은 메시지에 대한 이벤트 유형 세트와 추적에 대한 이벤트 유형 세트를 정의합니다. 메시지 유형의 예로는 정보, 경고 및 오류가 있습니다. 추적 유형의 예로는 시작, 종료, 추적이 있습니다.
- 이벤트 클래스
- 독립형 JRas 로깅 툴킷은 메시지 이벤트 클래스와 추적 이벤트 클래스를 모두 정의합니다.
- 로거
- 로거는 사용자 코드가 상호작용하는 기본 오브젝트입니다.
두 가지 유형의 로거인 메시지 로거와 추적 로거가 정의됩니다.
메시지 로거와 추적 로거는 서로 다른 기능을 제공하기 때문에 이 두 로거에 대한
메소드 세트도 다릅니다. 메시지 로거는 메시지 레코드만 작성하고, 추적 로거는 추적 레코드만
작성합니다. 두 가지 유형의 로거에는 로거가 처리하는 이벤트 카테고리와 무시할 카테고리를 표시하는
마스크가 있습니다. 모든 JRas 로거가 메시지 마스크와 추적 마스크 모두를
포함하도록 정의되기는 했지만, 메시지 로거는 메시지 마스크만 사용하고
추적 로거는 추적 마스크만 사용합니다. 예를 들어, 메시지 로거 메시지 마스크를 적당한 상태로 설정하여,
오류 메시지만 처리하고 정보 및 경고 메시지는 무시하도록 메시지 로거를
구성할 수 있습니다. 메시지 로거의 추적 마스크 상태를 변경해도
아무런 영향이 없습니다.
로거에는 처리를 위해 이벤트를 전달할 핸들러가 하나 이상 있습니다. 사용자가 로거에 대한 메소드를 호출하면 로거는 호출자가 지정한 이벤트 유형을 현재 마스크 값과 비교합니다. 지정된 유형이 마스크 검사를 패스하면 로거는 로거 메소드로 전달된 이벤트와 관련된 정보를 캡처하는 이벤트 오브젝트를 작성합니다. 이 정보에는 이벤트를 로그하는 클래스 및 메소드의 이름, 로그할 메시지 및 매개변수 등의 정보가 포함될 수 있습니다. 로거가 이벤트 오브젝트를 작성하면 현재 로거에 등록된 모든 핸들러에 이벤트가 전달됩니다.
로깅 인프라에서 사용되는 메소드는 로거 메소드를 호출하지 않습니다. 애플리케이션이 스레드 클래스를 확장하는 오브젝트를 사용하고, hashCode 메소드를 구현하고, 해당 메소드에서 로깅 인프라를 호출하는 경우 해당 결과는 순환 루프입니다.
- 핸들러
- 핸들러는 출력 디바이스 또는 이벤트 이용자에 대한 추상을 제공합니다. 이에 대한 예로는 파일 핸들러가 있으며 이는 파일에 이벤트를 작성하는 방법을 알고 있습니다. 또한 핸들러에는 핸들러가 처리하는 이벤트 카테고리를 제한하는 데 사용되는 마스크도 포함됩니다. 예를 들어, 메시지 로거는 경고 메시지와 오류 이벤트를 모두 전달하도록 구성하고, 메시지 로거에 첨부된 핸들러는 오류 이벤트만 전달하도록 구성할 수 있습니다. 또한 핸들러에는 출력 디바이스에 기록하기 전에 핸들러가 전달된 이벤트의 데이터를 형식화하기 위해 호출하는 포맷터도 포함됩니다.
- 포맷터
- 핸들러는 포맷터로 구성되며, 포맷터는 특정 유형의 이벤트를 형식화하는 방법을 인식합니다. 핸들러에는 각기 특정 이벤트 클래스를 형식화하는 방법을 인식하는 포맷터가 여러 개 포함될 수 있습니다. 핸들러가 이벤트 오브젝트를 해당 포맷터로 전달합니다. 포맷터가 형식화된 출력을 핸들러로 리턴하면, 핸들러가 출력 디바이스에 이를 기록합니다.