SocketHandler

SocketHandler (네트워크 로그 핸들러)

SocketHandler은 단순한 네트워크 로깅 Handler이에요. StreamHandler를 확장해요. LogRecord는 네트워크 스트림 연결에 게시돼요. 기본적으로 XMLFormatter 클래스가 형식화에 사용돼요.

출처: Java API Reference

본문

구성

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

  • <handler-name>.levelHandler의 기본 레벨(기본 Level.ALL).
  • <handler-name>.filter — 사용할 Filter 클래스 이름(기본 필터 없음).
  • <handler-name>.formatter — 사용할 Formatter 클래스 이름(기본 java.util.logging.XMLFormatter).
  • <handler-name>.encoding — 사용할 문자 집합 인코딩 이름(기본 플랫폼 인코딩).
  • <handler-name>.host — 연결할 대상 호스트 이름(기본 없음).
  • <handler-name>.port — 사용할 대상 TCP 포트(기본 없음).

예를 들어 SocketHandler 프로퍼티는 다음과 같아요:

java.util.logging.SocketHandler.level=INFO
java.util.logging.SocketHandler.formatter=java.util.logging.SimpleFormatter

사용자 지정 핸들러, 예를 들어 com.foo.MyHandler의 프로퍼티는 다음과 같아요:

com.foo.MyHandler.level=INFO
com.foo.MyHandler.formatter=java.util.logging.SimpleFormatter

출력 IO 스트림은 버퍼링되지만 각 로그 레코드가 완료되면 플러시돼요. 로그 서버가 준비될 때까지 대기하도록 소켓이 준비될 때까지 지연이 발생할 수 있어요.

생성자

  • SocketHandler() — LogManager 구성으로 초기화된 SocketHandler을 생성해요.
  • SocketHandler(String host, int port) — 지정된 호스트와 포트에 연결하는 SocketHandler을 생성해요. 호스트나 포트가 유효하지 않으면 IOException이 발생해요.

SocketHandler을 사용하면 TCP 소켓을 통해 원격 로그 수집 서버로 로그를 전송할 수 있어요.

더 알아보기 (Learn more)

Java 공식 API