Skip to content

Commit

Permalink
feat(net-api): prod 환경에서 발생하는 error 로그를 디스코드로 전송
Browse files Browse the repository at this point in the history
  • Loading branch information
inferior3x committed Dec 4, 2024
1 parent 5d2af31 commit 17d87e2
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 0 deletions.
1 change: 1 addition & 0 deletions modules/network-api/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ repositories {
}

dependencies {
implementation project(':modules:infrastructure:logging')
implementation project(':modules:infrastructure:log-writer')

implementation 'org.springframework.boot:spring-boot-starter'
Expand Down
7 changes: 7 additions & 0 deletions modules/network-api/src/main/resources/application.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
spring:
application:
name: WhozIn-Network
#@PropertySource는 스프링 컨텍스트가 초기화된 이후 처리되기 때문에 여기서 env를 미리 로드
config:
import: "classpath:env-network-api.properties"

profiles:
group:
local:
prod:
active: local
include: log-writer

logging:
discord:
webhook-url: ${DISCORD_WEBHOOK_URL}
20 changes: 20 additions & 0 deletions modules/network-api/src/main/resources/logback-spring.xml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
<!-- 스프링 컨텍스트가 완전히 초기화되기 전에 읽으므로 @PropertyConfig가 아닌 yml에서 env를 로드해야 함-->

<configuration>
<springProfile name="!prod">
<root level="INFO">
Expand All @@ -9,6 +11,7 @@
<root level="INFO">
<appender-ref ref="NO_COLOR_CONSOLE"/>
<appender-ref ref="FILE"/>
<appender-ref ref="ASYNC_DISCORD_ERROR"/>
</root>
</springProfile>

Expand Down Expand Up @@ -46,4 +49,21 @@
</encoder>
</appender>

<!-- AsyncAppender가 Appender를 감싸서 디스코드 로깅을 비동기로 처리할 수 있도록 함. -->
<appender name="ASYNC_DISCORD_ERROR" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="DISCORD_ERROR"/>
</appender>
<!-- Web hook url은 외부에 공개하면 안되므로 스프링 설정에서 읽어옴 -->
<springProperty name="DISCORD_WEBHOOK_URL" source="logging.discord.webhook-url"/>
<!-- 웹훅을 과도하게 사용하면 디스코드에서 제한을 거니까 ERROR 수준만 로깅 -->
<appender name="DISCORD_ERROR" class="com.whoz_in.logging.DiscordAppender">
<webhookUri>${DISCORD_WEBHOOK_URL}</webhookUri>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>${NO_COLOR_LOG_PATTERN}</pattern>
</encoder>
</appender>

</configuration>

0 comments on commit 17d87e2

Please sign in to comment.