본문 바로가기
DevOps

[ELK Stack 로그 수집 3/4] Spring Boot 로그 설정

by 헬로월드 2021. 9. 15.
반응형

이전 글

2021.09.10 - [DevOps] - [Spring Boot 로그 수집] AWS Elasticsearch Service 설치

2021.09.10 - [DevOps] - [Spring Boot 로그 수집] Logstash 설치

 

개요

Spring Boot에서 Logstash로 Log를 보내겠습니다.

 

Gradle Library 추가

Spring에 'logstash-logback-encoder' Library를 추가합니다.

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

https://github.com/logstash/logstash-logback-encoder

 

logback.xml 설정

Spring logback.xml 추가 또는 생성

logback을 통해서 Spring에서 생성되는 로그를 전달할 수 있습니다. 아래는 로그 설정 파일입니다.

예) src/main/resources/logback-spring.xml

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

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

    <!-- Logstash -->
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>ec2_logstash_url:5000</destination>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"appname":"appname","profile":"local"}</customFields>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="LOGSTASH" />
    </root>
</configuration>
  • <destination>의 'ec2-logstash_url:5000' 부분을 AWS EC2로 생성한 Logstash URL을 입력해주세요.
  • <customFields>는 elasticsearch에 추가로 쌓을 로그를 임의로 넣으면 됩니다.
    저는 서버를 구분하기 위한 'appname'과 운영환경을 구분하기 위한 'profile'을 추가하였습니다.

이제 Spring Boot 애플리케이션을 실해하면 Logstash를 통해서 Elasticsearch에 로그가 쌓이게 됩니다.

 

 

 

운영환경에 따른 logback 설정

개발 시 로컬 환경에서는 로그를 남기고 싶지 않을 것입니다. 

logback.xml 경로를 application.yml에서 설정해서 사용하면 운영환경별로 로그를 보낼 수 있습니다.

spring:
 profiles:
  active: local

... ...

logging:
 config: classpath:logback-spring-${spring.profiles.active}.xml

보통 Spring Boot 설정 파일을 application-local.yml, application-prod.yml 등으로 구분하는데 위 설정과 같이 해당 환경 파일별로 logback.xml의 경로를 설정하면 됩니다.

 


다음 글에서는 Kibana에서 로그를 확인해 보겠습니다.

728x90