Logback - Slack 연동해보기

Daniel·2024년 11월 25일
0

Back-End

목록 보기
46/48

들어가며

조금 더 빠른 에러 대응을 위해 운영중인 시스템의 ERROR 로그 를 사내에서 사용하는 슬랙으로 받고 싶었다.
해당 기능을 구현하며 경험하고 배운 내용들을 정리해보려한다.

어떻게 해?

열심히 구글링을 하니 다행이 내가 구현하고 싶은 기능들을 먼저 구현한 사람들이 많았다.
먼저 단계를 설정하고 그 단계들을 따라가는 방식을 택했다.

구현 단계 설정
1. 슬랙에서 메시지를 보낼 봇 생성
2. logback 설정 파일 내 SlackAppender 추가

봇 생성 하기

슬랙 봇 생성하기 해당 사이트를 따라 메시지를 보낼 봇을 생성했다. ERROR_BOT

프로젝트에 설정하기

logback-slack-appender 누군가가 쓰기 좋게 라이브러리를 만들어 놓아서 사용하기로 했다.

의존성 추가

// SLACK-BOT  
implementation group: 'com.github.maricn', name: 'logback-slack-appender', version: '1.6.1'

appenger 추가

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE xml>  
<configuration>
<!-- 그 외 로직들 -->

<!-- SLACK Appender: Custom -->  
<appender name="SLACK" class="com.github.maricn.logback.SlackAppender">  
    <!-- Slack API token -->  
    <token>{your API token}</token>  
    <!-- 타겟 채널 - default is #general -->    
    <channel>#{yout target channel}</channel>  
    <!-- 서식 지정 -->  
    <layout class="ch.qos.logback.classic.PatternLayout">  
        <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] [%-5level] %c{3}%n %msg%n</pattern>  
    </layout>  
    <!-- 메시지를 보낼 봇 이름 또는 username -->    
    <username>ERROR_BOT</username>  
</appender>  
  
<!-- 현재 권장되는 appender 추가 방식 -->  
<appender name="ASYNC_SLACK" class="ch.qos.logback.classic.AsyncAppender">  
    <appender-ref ref="SLACK"/>  
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">  
        <level>ERROR</level>
    </filter>  
</appender>

<!-- 그 외 로직들 -->
</configuration>

운영환경에만 적용하려고 아래와 같이 설정해 주었다.

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE xml>  
<configuration>
<!-- 그 외 로직들 -->

<!-- 운영 환경 -->  
<springProfile name="real">  
    <property name="classPath" value="{yourClassPath}" />  
    <property name="logDir" value="${classPath}/logs"/>  
    <root level="INFO">  
        <appender-ref ref="appender1" />  
        <appender-ref ref="appender2" />  
        <appender-ref ref="appender3" />  
        <appender-ref ref="ASYNC_SLACK" />  
    </root>  
</springProfile>

<!-- 그 외 로직들 -->
</configuration>

배포 후 테스트

위와같이 슬랙으로 ERROR 메시지가 온다...!

Note

조금 더 라이브러리나 구글링을 해보고 다듬어봐야겠다.

profile
응애 나 애기 개발자

0개의 댓글