이번 포스팅에서는 Elastic Stack을 연동하는 방법에 대해서 포스팅하려고한다. 서버에 Elastic Stack을 설치하지 않았다면 여기를 참고하면된다.

 

1. logstash dependency 추가 (build.gradle)

implementation 'net.logstash.logback:logstash-logback-encoder:6.6'

 

2. logback-spring.xml 파일 추가

logback-spring.xml을 resources 폴더 아래에 추가한다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%-5level %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}[%-5level] : %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <file>mylog.txt</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- or whenever the file size reaches 100MB -->
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>[%-5level] %d{HH:mm:ss.SSS} %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- Log Stash 사용시 사용할 TCP 통신 정보 -->
    <appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>서버ip정보:logstash포트</destination>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder"></encoder>
    </appender>

    <!-- root레벨 설정 -->
    <root level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="stash" />
    </root>

</configuration>

 

3. application.yml logback-spring.xml 추가

logging:
  config: classpath:logback-spring.xml

 

4. spring-cloud-starter-sleuth 추가(build.gradle)

만약 로그를 traceId, spanId별로 보고 싶다면 spring-cloud-starter-sleuth 의존성을 추가한다. msa 환경에서 로그를 추적하기 위해서 많이 사용한다.

implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-sleuth', version: '3.0.4'

 

5. Kibana 조회

Kibana에서 조회하려면 index patterns을 생성 후 로그는 Discover에서 조회할 수 있는데 이 과정은 생략하도록 하겠다.

로그를 다음과 같이 조회할 수 있다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기