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
   26   27   28   29   30   31