Page 31 -
P. 31
● net.logstash.logback.encoder.LogstashEncoder 클래스 사용
● net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder 클래스 사용
● 로그스태시로 일반 텍스트 로그 데이터 파싱
이 예에서는 LogstashEncoder를 사용한다. 가장 구현하기 쉽고 빠르며 로거(logger)에 추가 필드를
더할 필요가 없기 때문에 이 클래스를 선택했다. LoggingEventCompositeJsonEncoder를 사용하면
새로운 패턴이나 필드를 추가하고, 기본 공급자를 비활성하는 등의 작업을 수행할 수 있다. 이 두
클래스 중에서 선택한다면, 로그 파일을 로그스태시 포맷으로 파싱하는 것이 로그백이다. 세 번째
방법의 경우, JSON 필터를 사용하여 파싱을 로그스태시에 완전히 위임할 수 있다. 세 가지 방법
모두 좋지만 기본 구성을 추가하거나 제거해야 할 때는 LoggingEventCompositeJsonEncoder를 사
용하길 추천한다. 다른 두 방법은 전적으로 비즈니스 요구 사항에 달려 있다.
Note 애플리케이션이나 로그스태시에서 로그 정보를 처리할지 여부를 선택할 수 있다. 11
인코더를 구성하기 위해 logback-spring.xml이라는 로그백 구성 파일을 생성한다. 이 구성 파
일은 서비스 프로젝트의 resources 폴더에 있어야 한다. 라이선싱 서비스에서 로그백 구성은 코
드 11-1에서 볼 수 있으며, /licensing-service/src/main/resources/logback-spring.xml에 스프링 클라우드 슬루스와 집킨을 이용한 분산 추적
서 확인할 수 있다. 그림 11-5에서 이 구성이 출력하는 로그 결과를 보여 준다.
코드 11-1 로그스태시로 라이선싱 서비스의 로그백 구성 설정하기
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<springProperty scope="context" name="application_name"
source="spring.application.name"/>
<appender name="logstash" 로그스태시와 통신하려고 TcpSocketAppender를 사용한다.
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>logstash:5000</destination> TCP 통신을 위한 로그스태시 호스트 이름과 포트 번호다.
<encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<root level="INFO">
<appender-ref ref="logstash"/>
<appender-ref ref="CONSOLE"/>
</root>
<logger name="org.springframework" level="INFO"/>
413
macrospring_06.indd 413 2022-06-20 오후 1:10:08