Ordinary
About

Logback Slack

profileordilov / 2022. 3. 3

Spring logback Slack 메시지

에러가 발생하거나 했을 때 가장 쉽게 받아볼 수 있는 방법 중 하나로 슬랙이 있습니다. 로그 레벨에 따라서 슬랙으로 로그를 받아볼 수 있습니다.

설정 방법

incoming webhooks 설정하기

슬랙 앱에 추가하고 나면 생성되는 webhook_uri 가 필요합니다.

Spring 설정하기

logback과 slack을 연결하기 위해서 필요한 dependency를 추가해줘야 합니다. gradle 기준으로는 다음 코드를 입력합니다.

implementation "com.github.maricn:logback-slack-appender:1.4.0"

logback-spring.xml 에 추가하기

<configuration> <appender name="SLACK" class="com.github.maricn.logback.SlackAppender"> <!-- Slack API token --> <!-- <token>1111111111-1111111-11111111-111111111</token>--> <!-- Slack incoming webhook uri. Uncomment the lines below to use incoming webhook uri instead of API token. --> <webhookUri>${SLACK_WEBHOOK_URI}</webhookUri> <!-- Channel that you want to post - default is #general --> <channel>#noti</channel> <!-- Formatting (you can use Slack formatting - URL links, code formatting, etc.) --> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%-4relative [%thread] %-5level %class - %msg%n</pattern> </layout> <!-- Username of the messages sender --> <username>${HOSTNAME}</username> <!-- Emoji to be used for messages --> <iconEmoji>:stuck_out_tongue_winking_eye:</iconEmoji> <!-- If color coding of log levels should be used --> <colorCoding>true</colorCoding> </appender> <!-- Currently recommended way of using Slack 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> </configuration>

위의 코드는 대부분을 위에서 추가한 라이브러리에서 제공한 readme에서 가져왔습니다. 변경한 부분은 token 대신 slack_webhook_uri 를 사용하는 점입니다. 설명 그대로 noti를 보낼 채널을 설정하고 로그 레벨을 설정할 수 있습니다.

slack webhook uri 설정하기

만약 위의 코드에서 SLACK_WEBHOOK_URI 주소를 그대로 넣게 되면 메일이 오게 됩니다. Slack 에서 webhook 주소를 직접 입력하면 위험하다고 Webhook 주소가 변경되었다는 메일입니다.
따라서 webhook 주소를 직접 이용하는 것은 가능하지도 않고 위험합니다.

따라서 환경 변수를 따로 지정해서 입력합니다. application.yml 기준으로는 다음과 같이 가능합니다.

logging: slack: webhook-uri: ${SLACK_WEBHOOK_URI} config: classpath:logback-spring.xml

yml 파일을 따로 로컬로 관리하거나 SLACK_WEBHOOK_URI 그대로 시스템 환경변수로 등록해 사용합니다. 설정한 이후로 슬랙으로 로그가 오는걸 확인할 수 있습니다.