HPEL(High Performance Extensible Logging)
HPEL(High Performance Extensible Logging)은 WebSphere® Application Server의 일부로 제공되는 로그 및 추적 기능입니다.
개요

HPEL은
애플리케이션 서버 또는 애플리케이션에서 생성하는 로그, 추적,
System.err, System.out 정보를 저장하고 이에 액세스하는 편리한 메커니즘을 제공합니다.
이는 기본 로그 및 추적 기능의 대안으로
JVM 로그, 진단 추적, 서비스 로그 파일(일반적으로
SystemOut.log/SystemErr.log, trace.log, activity.log와 같이 이름 지정됨)을
제공합니다.
HPEL은
애플리케이션 서버 또는 애플리케이션에서 생성하는 로그, 추적,
System.err, System.out 정보를 저장하고 이에 액세스하는 편리한 메커니즘을 제공합니다.
이는 JES, LogStreams, 컴포넌트 추적, 계층 구조 파일 시스템 또는 기타 기능을
이용하는
z/OS® 플랫폼에서 제공하는 기존 로그 및 추적 기능에 대한
대안입니다.
HPEL 로그 및 추적 스토리지
HPEL은 로그 데이터 저장소, 추적 데이터 저장소, 텍스트 로그 파일을 제공합니다. 애플리케이션과 애플리케이션 서버가 로그 및 추적 정보를 저장하는 방법을 이해하려면 다음 그림을 참조하십시오.

- HPEL 로그 데이터 저장소
로그 데이터 저장소는 로그 레코드의 스토리지 기능입니다. 로그 데이터는 일반적으로 관리자가 검토하기 위해 작성됩니다. 여기에서는 세부사항 이상 레벨에서 System.out, System.err 또는 java.util.logging에 애플리케이션이나 서버가 작성하는 정보를 포함합니다(세부사항 레벨 이상의 세부사항, 구성, 정보, 감사, 경고, 심각, 치명, 사용자 정의 레벨 포함).
- HPEL 추적 데이터 저장소
추적 데이터 저장소는 추적 레코드의 스토리지 기능입니다. 추적 데이터는 일반적으로 애플리케이션 프로그래머 또는 WebSphere Application Server 지원 팀에서 사용하도록 제공됩니다. 여기에서는 세부사항 이하 레벨에서 java.util.logging에 애플리케이션이나 서버가 작성하는 정보를 포함합니다(세부사항 레벨 이하의 양호, 보다 양호, 가장 양호, 사용자 정의 레벨 포함).
지원된 구성: 더 이상 사용되지 않는 JRAS 로깅 API에 작성된 로그 및 추적 컨텐츠는 로그 및 추적 데이터 저장소에도 포함됩니다. Jakarta Commons Logging과 같은 일부 로깅 API는 java.util.logging에 로그 및 추적 데이터를 라우팅하도록 구성될 수 있으며, 해당 출력도 로그 데이터 또는 추적 데이터 저장소에 저장됩니다. sptcfg
- HPEL 텍스트 로그
-
텍스트 로그 파일은 로그 및 추적 레코드에 대한 일반 텍스트 파일입니다. 텍스트 로그 파일은 편의를 위해 제공됩니다. 기본적으로 LogViewer 명령행 도구를 실행하지 않고도 로그 컨텐츠를 읽어 로그 데이터 저장소 컨텐츠를 일반 텍스트로 변환할 수 있습니다.
텍스트 로그 파일은 로그 데이터 저장소 또는 추적 데이터 저장소에 저장되지 않는 컨텐츠를 포함하지 않습니다. 서버 성능을 향상시키도록 텍스트 로그를 사용하지 않을 수 있습니다. 텍스트 로그는 디버깅 편의를 위해 추적 컨텐츠를 기록하도록 구성할 수 있습니다.
텍스트 로그 파일에는 하위(servant) 또는 부속 요소 프로세스에서 생성된 로그 항목이 아니라 제어기 프로세스를 통해 생성된 로그 항목만 포함됩니다. 따라서 z/OS에서는 애플리케이션 로그 레코드가 텍스트 로그에 기록되지 않습니다. 모든 애플리케이션 서버 프로세스에 대한 로그를 보거나 데이터를 추적하려면 LogViewer 명령행 도구를 사용하거나 관리 콘솔에서 HPEL 로그 보기 도구를 사용하십시오.
문제점 방지: 텍스트 로그에 추적을 작성할 경우 성능 관점에서 자원이 많이 들어갑니다. gotcha
로그 및 추적 성능
HPEL은 기존 기본 로그 및 추적 기능의 능력을 크게 뛰어넘도록
디자인되었으며 테스트를 마쳤습니다. 한 가지 결과는
기본 로깅을 사용하여 동일한 컴포넌트를 추적하는 것보다
성능에 영향을 덜 주면서 애플리케이션 서버에서 추적을 사용하여 실행할 수 있습니다. 또 다른 결과로, 로그를 자주 작성하는 애플리케이션이 HPEL에서 더 빠르게
실행될 수도 있습니다. 여러 가지 요소가 HPEL 로깅 및 추적의 전반적인 성능에
영향을 줍니다.
- 각각의 로그 및 추적 이벤트가 한 위치에만 저장됨
로그 이벤트, System.out 및 System.err은 로그 데이터 저장소에 저장됩니다. 추적 이벤트는 추적 데이터 저장소에 저장됩니다. 텍스트 로그 파일을 사용하지 않으면 HPEL은 이러한 저장소에 로그 및 추적 컨텐츠 쓰기만 수행합니다. 한 위치에 이러한 각 이벤트 유형을 저장하면 중복된 데이터 스토리지에서 성능이 낭비되지 않습니다.
로그 이벤트와 선택적으로 추적 이벤트는 사용 가능한 경우 텍스트 로그 파일에 작성됩니다. 이 데이터는 항상 로그 데이터 및 추적 데이터 저장소에도 저장되므로 텍스트 로그 파일 컨텐츠는 중복됩니다. 텍스트 로그는 로그 및 추적을 보기 위해 LogViewer 명령행 도구를 실행하지 않으려는 사용자에게 편리합니다. 그러나 이 편리한 기능이 필요하지 않으면 텍스트 로그를 사용하지 않을 수도 있습니다.
- 로그 및 추적 저장소가 프로세스에서 공유되지 않음
프로세스 간 활동을 동기화하면 관련된 모든 프로세스의 성능이 저하됩니다. HPEL에서 각 서버 프로세스에는 고유한 로그 데이터 저장소, 추적 데이터 저장소, 텍스트 로그 파일이 있습니다. 이러한 파일은 프로세스 사이에서 공유되지 않으므로 서버 런타임 환경은 이러한 대상에 작성할 때 다른 프로세스와 동기화하지 않아도 됩니다.
- 필요하지 않으면 데이터가 형식화되지 않음
사용자가 읽을 데이터를 형식화하는 경우 프로세서 시간을 사용합니다. 런타임에 로그 이벤트 및 추적 이벤트 데이터를 형식화하는 대신, HPEL 로그 및 추적 데이터는 독점 2진 표시로 더 빠르게 저장됩니다. 이는 로그 및 추적 기능의 성능을 향상시킵니다. LogViewer를 실행할 때까지 로그 및 추적 형식화를 지연하면 보이지 않는 로그 또는 추적 섹션은 형식화되지 않습니다.
이미 읽을 수 있는 텍스트 형식으로 로그 데이터와 추적 데이터를 저장하는 텍스트 로그 파일을 사용할 수 있습니다.
우수 사례: 서버 성능이 가장 중요하거나 텍스트 로그를 원하지 않는 경우 텍스트 로그를 사용하지 마십시오. bprac
- 디스크에 작성하기 전에 로그 및 추적 데이터가 버퍼링됨
디스크에 대형 데이터 블록을 작성하는 경우 작은 블록으로 작은 데이터를 쓰는 것보다 더 효율적입니다. HPEL에서는 디스크에 쓰기 전에 버퍼 로그 및 추적 데이터를 제공합니다. 기본적으로 디스크에 쓰기 전에 로그 및 추적 데이터는 8KB 버퍼에 저장됩니다. 버퍼가 10초 안에 채워지면 버퍼를 디스크에 씁니다. 이 시간 안에 버퍼가 채워지지 않으면 로그에 최신 정보를 보유하도록 자동으로 디스크에 씁니다.
지원된 구성: 버퍼 크기는 HPEL.BUFFER.SIZE 시스템 특성을 설정하여 제어할 수 있습니다. 버퍼를 디스크에 쓰는 빈도는 HPEL.FLUSH.PERIOD.SECS 시스템 특성을 설정하여 제어할 수 있습니다. sptcfg
로그 및 추적 관리
HPEL은 쉽게 구성하고 이해할 수 있도록 디자인되었습니다. 예를 들어 관리자는 로그 또는 추적에 전용으로 사용할 디스크 공간 크기나 로그 및 추적 레코드를 보유하는 기간을 쉽게 구성할 수 있으며, 서버에 로그 및 추적 컨텐츠의 관리를 맡길 수 있습니다. 또 다른 예로, 특정 컨텐츠에 액세스할 파일에서 잠재적인 경합을 피하도록 모든 로그, 추적, System.out, System.err 컨텐츠는 사용하기 쉬운 명령(LogViewer)을 사용하여 액세스할 수 있습니다.
- 로그 데이터 및 추적 데이터 저장소에서 읽기
로그 데이터 및 추적 데이터 저장소는 WebSphere Application Server 독점 형식으로 저장되며, 메모장이나 VI와 같은 텍스트 파일 편집기를 사용하여 읽을 수 없습니다. LogViewer 명령을 사용하여 일반 텍스트 형식으로 로그 데이터 및 추적 데이터 저장소를 복사할 수 있습니다.
- HPEL LogViewer 명령
HPEL LogViewer는 HPEL 사용자가 로그 데이터 및 추적 데이터 저장소를 사용하도록 제공된 사용이 용이한 명령행 도구입니다. LogViewer에서는 로그 데이터 및 추적 데이터 저장소에서 쉽게 중요한 컨텐츠를 찾을 수 있는 필터링 및 형식화 옵션을 제공합니다. 예를 들어 사용자는 오류나 경고를 필터링한 다음, 동일한 스레드에서 키 오류 메시지가 발생한 후 10초 이내에 나타나는 모든 로그 및 추적 항목을 필터링할 수 있습니다.
- 로그 및 추적 레코드 확장 컨텐츠를 사용하여 필터링
LogViewer 명령행 도구를 사용하여 로그 및 추적 레코드 확장기능 컨텐츠에 따라 레코드를 필터링할 수 있습니다. 애플리케이션 서버는 Java EE(Java™ Platform, Enterprise Edition) 애플리케이션과 관련된 각 로그 및 추적 레코드에 대해 해당 애플리케이션 이름을 나타내는 appName 확장을 자동으로 작성합니다. 애플리케이션 서버는 특정 유형의 요청(HTTP 또는 JMS 요청) 처리 중 작성된 각 로그 및 추적 레코드에 대해 requestID 확장기능을 자동으로 작성하며 해당 요청의 고유 ID를 표시합니다.
교차 컴포넌트 추적이 사용 가능하면 requestID 확장은 로그 및 추적 레코드에만 추가됩니다. 또한 HPEL에서는 개발자가 로그 레코드 컨텍스트 API(com.ibm.websphere.logging.hpel.LogRecordContext)를 사용하여 로그 및 추적 레코드에 사용자 정의 확장을 추가할 수 있는 기능을 제공합니다.
- 관리 콘솔에서 HPEL
관리 콘솔에는 HPEL 관리자가 다음을 수행할 수 있는 페이지가 포함되어 있습니다.
- HPEL 로그 데이터 저장소를 구성합니다.
- HPEL 추적 데이터 저장소를 구성합니다.
- HPEL 텍스트 로그 파일을 구성합니다.
- HPEL 로그 및 추적 데이터 저장소의 컨텐츠를 봅니다.
- 로깅 및 추적에 대한 로그 세부사항 레벨을 보고 설정합니다.
이 기능을 사용하려면 관리 콘솔에서
링크를 클릭하십시오.
개발 자원
HPEL은 기본 로깅 기능보다 더 유연하고 효과적으로 로그 및 추적 컨텐츠에 대한 작업을 수행하도록 디자인되었습니다. 로그 및 추적 컨텐츠를 쉽게 필터링하여 원하는 레코드만 표시할 수 있습니다. 사용자는 명령행을 사용할 수 있으며(HPEL LogViewer 명령 설명 참조) 개발자는 HPEL API를 사용하여 강력한 로그 처리 프로그램을 작성할 수 있습니다.
- 로그 데이터 및 추적 데이터 저장소에서 읽은 스크립트 및 Java 프로그램
- 개발자 및 스크립트 작성자에게는 로그 데이터 및 추적 데이터 저장소를 읽는 방법에 대한 여러 옵션이 있습니다.
- HPELControlService JMX MBean을 사용하여 wsadmin 스크립트에서 로컬 또는 원격으로
- HPELControlService JMX MBean을 사용하여 Java 프로그램에서 로컬 또는 원격으로
- com.ibm.websphere.logging.hpel API를 사용하여 Java 프로그램에서 로컬로
- HPEL 관련 JMX MBean
MBean 인터페이스는 HPEL 저장소 컨텐츠에 원격으로 쉽게 액세스할 수 있도록 제공됩니다. 예를 들어 개발자는 WebSphere Application Server 셀에서 로그 컨텐츠를 읽는 JMX 클라이언트 프로그램을 작성할 수 있습니다. 이 인터페이스는 HPELControlService MBean의 일부입니다. HPEL 원격 로그 읽기 인터페이스에 대한 세부사항은 MBean 인터페이스 문서를 참조하십시오.
표 1. HPEL 관련 JMX MBean . JMX MBean은 HPEL 조작과 관련됩니다. JMX MBean 설명 HPELControlService 서버의 로그 또는 추적 세부사항 레벨을 구성하고 로그 컴포넌트 레지스트리를 보고 로그 및 추적 저장소를 조회하는 작업과 관련된 조작을 제공합니다. HPELLogDataService 서버의 로그 데이터 저장소 구성과 관련된 조작 제공 HPELTraceDataService 서버의 추적 데이터 저장소 구성과 관련된 조작 제공 HPELTextLogService 서버의 텍스트 로그 파일 구성과 관련된 조작 제공 RasLoggingService 로그 이벤트의 JMX 알림에만 사용됨 기본 로깅 대신 로그 및 추적에 대해 HPEL을 사용하는 경우 로그 및 추적 JMX MBean, TraceService는 사용되지 않습니다.
- HPEL API
개발자가 HPEL 로그 및 추적 저장소의 컨텐츠를 이용하기 위한 도구를 쉽게 개발할 수 있도록 API가 제공됩니다. 예를 들어 개발자는 중요한 메시지 ID의 알려진 목록과 일치하는 메시지 ID의 메시지를 찾도록 로그 및 추적 컨텐츠를 검색하는 Java 프로그램을 작성할 수 있습니다. 이 API는 com.ibm.websphere.logging.hpel 패키지에 있습니다. HPEL 로그 읽기 API에 대한 세부사항은 API 문서를 참조하십시오.
- 로그 및 추적 레코드 확장성
개발자는 HPEL을 사용하여 로그 레코드 컨텍스트 API(com.ibm.websphere.logging.hpel.LogRecordContext)를 통해 로그 및 추적 레코드에 사용자 정의 확장기능을 추가할 수 있습니다. HPEL이 로그 및 추적 레코드를 저장하는 경우, 동일 스레드에 로그 레코드 컨텍스트에 있는 확장기능을 포함합니다. 예를 들어 개발자는 서블릿 필터를 작성하여 중요 HTTP 요청 매개변수를 로그 레코드 컨텍스트에 추가할 수 있습니다. 해당 서블릿이 실행되는 동안, HPEL은 이 확장기능을 동일 스레드에서 작성된 로그 및 추적 레코드에 추가합니다.
다른 로그 및 추적 레코드 필드와 마찬가지로, 개발자는 HPEL API를 사용하여 레코드 확장자에 액세스할 수 있습니다. 이는 로그 및 추적 저장소에서 읽을 도구를 작성할 때 유용합니다. 또한 개발자는 로그 레코드 컨텍스트 API를 사용하여 런타임에 사용자 정의 로그 핸들러, 필터 및 포맷터의 확장기능에 액세스할 수 있습니다.