MemoryHandler

MemoryHandler (메모리 버퍼 핸들러)

MemoryHandler은 요청을 메모리의 순환 버퍼(circular buffer)에 버퍼링하는 Handler이에요. 일반적으로 이 Handler은 들어오는 LogRecord를 메모리 버퍼에 저장하고 더 오래된 레코드는 버려요. 이 버퍼링은 매우 저렴하고 형식화 비용을 피해요. 특정 트리거 조건에서 MemoryHandler은 현재 버퍼 내용을 대상 Handler으로 밀어내며, 대상 Handler이 이를 외부에 게시해요.

출처: Java API Reference

본문

버퍼 푸시(push) 트리거에는 세 가지 주요 모델이 있어요:

  • 들어오는 LogRecord가 미리 정의된 레벨인 pushLevel보다 큰 타입을 가질 때.
  • 외부 클래스가 push 메서드를 명시적으로 호출할 때.
  • 서브클래스가 log 메서드를 오버라이드하고 각 들어오는 LogRecord를 검사해 레코드가 원하는 기준과 일치하면 push를 호출할 때.

구성

기본적으로 각 MemoryHandler은 다음 LogManager 구성 프로퍼티로 초기화돼요(<handler-name>은 핸들러의 완전한 클래스 이름). 프로퍼티가 정의되지 않으면 지정된 기본값이 사용돼요. 기본값이 정의되지 않으면 RuntimeException이 발생해요.

  • <handler-name>.levelHandler의 레벨(기본 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을 생성해요.

더 알아보기 (Learn more)

Java 공식 API