Backend/Spring Framework

[Spring Boot] 로그 Slack으로 보내기

mopil 2023. 7. 18. 13:23
반응형

서버에서 발생하는 로그를 슬랙으로 자동으로 전송하는 설정을 알아보자

 

# 웹훅 생성

https://mopil.tistory.com/159

 

[Spring Boot] Slack 메시지 보내기

어플리케이션에서 슬랙으로 메시지를 보내는 방법에 대해 공유한다. 토큰을 사용한 봇 방법과 웹훅 방법이 있는데, 여기서는 웹훅 방법을 통해 구현한다. # 웹훅 만들기 먼저 원하는 워크스페이

mopil.tistory.com

웹훅을 먼저 생성한다. 위 글을 참조할 것

 

# application.properties 및 기타 설정

위 구조로 설정파일들을 생성한다.

 

application-dev.properties에서 logback 설정파일을 읽을 수 있도록 다음을 추가한다. (live도 동일)

 

logging.config=classpath:logback/logback-dev.xml

 

다음 의존성을 추가한다.

implementation("com.github.maricn:logback-slack-appender:1.6.1")

 

# logback-dev.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
    <logger name="org.hibernate.SQL_SLOW" level="WARN"/>

    <springProperty name="SLACK_WEBHOOK_URL" source="slack.webhook.url"/>

    <appender name="SLACK" class="com.github.maricn.logback.SlackAppender">
        <webhookUri>${SLACK_WEBHOOK_URL}</webhookUri>
        <channel>alert-test</channel>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%date %-5level - %msg%n</pattern>
        </layout>
        <username>Dev-Logger</username>
        <iconEmoji>:large_blue_circle:</iconEmoji>
        <colorCoding>true</colorCoding>
    </appender>

    <appender name="ASYNC_SLACK" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="SLACK" />
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
        </filter>
    </appender>

    <root>
        <level value="INFO" />
        <appender-ref ref="ASYNC_SLACK" />
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

 

로그레벨이 WARN일 때만 슬랙 메시지를 보내도록 설정했다.

웹훅URL을 설정파일에서 읽어와서 등록하고, 여기서는 채널과 이모지, 봇 이름등을 설정한다.

 

logback-live.xml은 운영환경 로그인데, dev와 동일하되 채널명만 다르게 설정하면 된다.

 

 

서버에서 logger.warn(), logger.error()로 로깅하면 자동으로 슬랙 메시지가 전송된다.

반응형