로그백 GELF
추가 종속성이 없는 GELF(Graylog Extended Log Format) 메시지를 보내기 위한 Logback Appender입니다.
특징
- UDP(청킹 포함)
- TCP(TLS 암호화 포함 또는 제외)
- Https)
- GZIP 및 ZLIB 압축(UDP 및 HTTP 모드)
- 클라이언트 측 로드 밸런싱(라운드 로빈)
- MDC(Mapped Diagnostic Context) 전달
- 발신자 데이터 전달
- 정적 필드 전달
- 예외 근본 원인 전달
- Logback 옆에는 런타임 종속성이 없습니다.
요구사항
예
간단한 UDP 구성:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfUdpAppender " >
< graylogHost >localhost</ graylogHost >
< graylogPort >12201</ graylogPort >
</ appender >
< root level = " debug " >
< appender-ref ref = " GELF " />
</ root >
</ configuration >
간단한 TCP 구성:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfTcpAppender " >
< graylogHost >localhost</ graylogHost >
< graylogPort >12201</ graylogPort >
</ appender >
<!-- Use AsyncAppender to prevent slowdowns -->
< appender name = " ASYNC GELF " class = " ch.qos.logback.classic.AsyncAppender " >
< appender-ref ref = " GELF " />
< neverBlock >true</ neverBlock >
</ appender >
< root level = " debug " >
< appender-ref ref = " ASYNC GELF " />
</ root >
</ configuration >
TLS 구성을 사용한 단순 TCP:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfTcpTlsAppender " >
< graylogHost >localhost</ graylogHost >
< graylogPort >12201</ graylogPort >
</ appender >
<!-- Use AsyncAppender to prevent slowdowns -->
< appender name = " ASYNC GELF " class = " ch.qos.logback.classic.AsyncAppender " >
< appender-ref ref = " GELF " />
< neverBlock >true</ neverBlock >
</ appender >
< root level = " debug " >
< appender-ref ref = " ASYNC GELF " />
</ root >
</ configuration >
간단한 HTTP 구성:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfHttpAppender " >
< uri >https://my.server:12201/gelf</ uri >
</ appender >
<!-- Use AsyncAppender to prevent slowdowns -->
< appender name = " ASYNC GELF " class = " ch.qos.logback.classic.AsyncAppender " >
< appender-ref ref = " GELF " />
< neverBlock >true</ neverBlock >
</ appender >
< root level = " debug " >
< appender-ref ref = " ASYNC GELF " />
</ root >
</ configuration >
예제 디렉터리에서 더 많은 고급 예제를 찾아보세요.
구성
어펜더
de.siegmar.logbackgelf.GelfUdpAppender
- greylogHost : greylog 서버의 IP 또는 호스트 이름입니다. 호스트 이름이 여러 IP 주소로 확인되면 라운드 로빈이 사용됩니다.
- greylogPort : greylog 서버의 포트입니다. 기본값: 12201.
- maxChunkSize : GELF 청크의 최대 크기(바이트)입니다. 기본 청크 크기는 508입니다. 이는 IP 패킷 조각화를 방지합니다. 이는 권장되는 최소값이기도 합니다. 지원되는 최대 청크 크기는 65,467바이트입니다.
- 압축 방법 : 사용할 압축 방법(NONE, GZIP 또는 ZLIB)입니다. 기본값: GZIP.
- messageIdSupplier : GELF UDP 프로토콜에 필요한 고유한 메시지 ID를 제공하는 메커니즘입니다. 기본값:
de.siegmar.logbackgelf.MessageIdSupplier
. - 인코더 : 아래 인코더 구성을 참조하세요.
de.siegmar.logbackgelf.GelfTcpAppender
- greylogHost : greylog 서버의 IP 또는 호스트 이름입니다. 호스트 이름이 여러 IP 주소로 확인되면 라운드 로빈이 사용됩니다.
- greylogPort : greylog 서버의 포트입니다. 기본값: 12201.
- connectTimeout : 연결 설정을 기다리는 최대 시간(밀리초)입니다. 값이 0이면 연결 시간 초과가 비활성화됩니다. 기본값: 15,000밀리초.
- SocketTimeout : 소켓을 읽을 때 차단하는 최대 시간(밀리초)입니다. 값 0은 소켓 시간 초과를 비활성화합니다. 기본값: 5,000밀리초.
- reconnectInterval : 기존 연결이 닫혔다가 다시 열린 후의 시간 간격(초)입니다. -1 값은 자동 재연결을 비활성화합니다. 기본값: 60초.
- maxRetries : 재시도 횟수입니다. 값이 0이면 재시도가 비활성화됩니다. 기본값: 2.
- retryDelay : 재시도 간격(밀리초)입니다. maxRetries가 0이면 무시됩니다. 기본값: 3,000밀리초.
- poolSize : 동시 TCP 연결 수(최소 1). 기본값: 2.
- poolMaxWaitTime : 풀에서 연결을 사용할 수 있을 때까지 기다리는 최대 시간(밀리초)입니다. -1 값은 시간 초과를 비활성화합니다. 기본값: 5,000밀리초.
- poolMaxIdleTime : 풀링된 연결이 '부실'한 것으로 간주되어 재사용되지 않을 때까지 유휴 상태로 있을 수 있는 최대 시간(초)입니다. -1 값은 최대 유휴 시간 기능을 비활성화합니다. 기본값: -1(비활성화)
- 인코더 : 아래 인코더 구성을 참조하세요.
de.siegmar.logbackgelf.GelfTcpTlsAppender
- GelfTcpAppender의 모든 것
- insecure : true인 경우 TLS 인증서 유효성 검사를 건너뜁니다. 이것을 프로덕션에 사용하면 안 됩니다! 기본값: 거짓.
de.siegmar.logbackgelf.GelfHttpAppender
- uri : greylog 서버의 HTTP(s) URI(예: https://my.server:12201/gelf).
- insecure : true인 경우 TLS 인증서 유효성 검사를 건너뜁니다. 이것을 프로덕션에 사용하면 안 됩니다! 기본값: 거짓.
- connectTimeout : 연결 설정을 기다리는 최대 시간(밀리초)입니다. 값이 0이면 연결 시간 초과가 비활성화됩니다. 기본값: 15,000밀리초.
- requestTimeout : 응답을 기다리는 최대 시간(밀리초)입니다. 값이 0이면 시간 초과가 비활성화됩니다. 기본값: 5,000밀리초.
- maxRetries : 재시도 횟수입니다. 값이 0이면 재시도가 비활성화됩니다. 기본값: 2.
- retryDelay : 재시도 간격(밀리초)입니다. maxRetries가 0이면 무시됩니다. 기본값: 3,000밀리초.
- 압축 방법 : 사용할 압축 방법(NONE, GZIP 또는 ZLIB)입니다. 기본값: GZIP.
- 인코더 : 아래 인코더 구성을 참조하세요.
인코더
de.siegmar.logbackgelf.GelfEncoder
- OriginHost : 원본 호스트 이름 - 지정되지 않은 경우 자동 감지됩니다.
- includeRawMessage : true인 경우 원시 메시지(인수 자리 표시자 포함)도 전송됩니다. 기본값: 거짓.
- includeKeyValues : true인 경우 키 값 쌍도 전송됩니다. 기본값: 참.
- includeMarker : true인 경우 로그백 마커도 전송됩니다. 기본값: 거짓.
- includeMdcData : true인 경우 MDC 키/값도 전송됩니다. 기본값: 참.
- includeCallerData : true인 경우 호출자 데이터(소스 파일, 메소드, 클래스 이름 및 행)도 전송됩니다. 기본값: 거짓.
- includeRootCauseData : true인 경우 로그 메시지와 함께 전달된 예외의 근본 원인 예외가 root_cause_class_name 및 root_cause_message 필드에 노출됩니다. 기본값: 거짓.
- includeLevelName : true인 경우 로그 수준 이름(예: DEBUG)도 전송됩니다. 기본값: 거짓.
- levelNameKey : 로그 수준 이름에 사용해야 하는 키(예: 필드 이름)입니다. 이는 includeLevelName이 true인 경우에만 관련됩니다. 기본값: level_name.
- loggerNameKey : 로거 이름에 사용해야 하는 키(예: 필드 이름)입니다. 기본값: logger_name.
- threadNameKey : 스레드 이름에 사용해야 하는 키(예: 필드 이름)입니다. 기본값: thread_name.
- appendNewline : true인 경우 시스템에 따른 개행 구분 기호가 각 메시지 끝에 추가됩니다. 이는 콘솔 로깅에만 적합하므로 TCP/UDP/HTTP 어펜더와 함께 사용하지 마십시오!
- shortMessageLayout : 짧은 메시지 형식입니다. 기본값:
"%m%nopex"
. - fullMessageLayout : 전체 메시지 형식(Stacktrace). 기본값:
"%m%n"
. - NumberAsString : 숫자를 문자열로 기록합니다. 기본값: 거짓.
- staticFields : greylog로 보낼 추가 정적 필드입니다. 기본값: 없음.
문제 해결
문제가 있으면 디버그 모드를 활성화하고 로그를 확인하세요.
< configuration debug = " true " >
...
</ configuration >