MemoryHandler
MemoryHandler (메모리 버퍼 핸들러)
MemoryHandler은 요청을 메모리의 순환 버퍼(circular buffer)에 버퍼링하는 Handler이에요. 일반적으로 이 Handler은 들어오는 LogRecord를 메모리 버퍼에 저장하고 더 오래된 레코드는 버려요. 이 버퍼링은 매우 저렴하고 형식화 비용을 피해요. 특정 트리거 조건에서 MemoryHandler은 현재 버퍼 내용을 대상 Handler으로 밀어내며, 대상 Handler이 이를 외부에 게시해요.
본문
버퍼 푸시(push) 트리거에는 세 가지 주요 모델이 있어요:
- 들어오는
LogRecord가 미리 정의된 레벨인pushLevel보다 큰 타입을 가질 때. - 외부 클래스가
push메서드를 명시적으로 호출할 때. - 서브클래스가
log메서드를 오버라이드하고 각 들어오는LogRecord를 검사해 레코드가 원하는 기준과 일치하면push를 호출할 때.
구성
기본적으로 각 MemoryHandler은 다음 LogManager 구성 프로퍼티로 초기화돼요(<handler-name>은 핸들러의 완전한 클래스 이름). 프로퍼티가 정의되지 않으면 지정된 기본값이 사용돼요. 기본값이 정의되지 않으면 RuntimeException이 발생해요.
<handler-name>.level—Handler의 레벨(기본Level.ALL).<handler-name>.filter— 사용할Filter클래스 이름(기본 필터 없음).<handler-name>.size— 버퍼 크기(기본 1000).<handler-name>.push— push 레벨(기본Level.SEVERE).<handler-name>.target— 푸시 대상Handler의 클래스 이름(필수).
생성자
MemoryHandler(Handler target, int size, Level pushLevel)— 지정된 대상, 크기, push 레벨로MemoryHandler을 생성해요.MemoryHandler()— LogManager 구성으로 초기화된MemoryHandler을 생성해요.