Skip to content

Commit

Permalink
[Feature/446] 로그를 파일로 저장하도록 한다 (#447)
Browse files Browse the repository at this point in the history
* feat: 로그 파일로 남기기

* feat: 로깅 경로 수깅

* feat: 비동기로 로깅하도록 설정

* feat: 슬랙 error 알림 시 멘션되도록 추가
  • Loading branch information
miseongk authored Sep 23, 2024
1 parent 7ad4ed5 commit 15df9d3
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 5 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/daily-scrum-notification.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Send Slack Notification

on:
schedule:
- cron: '0 0 * * 1-5' # 매주 월~금 오전 1시 UTC에 실행 (한국 시간으로는 오전 9시 57로 버퍼둠)
- cron: '0 0 * * 1-5' # 매주 월~금 오전 1시 UTC에 실행

jobs:
notify:
Expand All @@ -15,7 +15,7 @@ jobs:
{
"channel": "C07LHAWLVNG",
"text": "<@U07L8AX9B4N><@U07L87A3WKY><@U07LC3Q1MEH><@U07LHEEU2BW><@U07LESGBQEP><@U07LMP4PY0L><@U07LHAXGYBE><@U07L87GGHJS>
:calendar: 보틀즈 데일리 스크럼 :calendar:**\n\n
**:calendar: 보틀즈 데일리 스크럼 :calendar:**\n\n
:one: - 완료된 작업 내용\n\n
:two: - 오늘 해야 할 작업\n\n
:three: - 겪고 있는 문제나 도움이 필요한 사항\n\n
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/deploy-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,8 @@ jobs:
echo "export LOGSTASH_PORT=${{ secrets.LOGSTASH_PORT }}" >> /home/${{ secrets.SERVER_USER_NAME }}/deploy/env_vars.sh
echo "export SLACK_WEBHOOK_URL=${{ secrets.SLACK_WEBHOOK_URL }}" >> /home/${{ secrets.SERVER_USER_NAME }}/deploy/env_vars.sh
echo "export LOG_PATH=${{ secrets.LOG_PATH }}" >> /home/${{ secrets.SERVER_USER_NAME }}/deploy/env_vars.sh
export SERVER_USER_NAME=${{ secrets.SERVER_USER_NAME }}
Expand Down
40 changes: 37 additions & 3 deletions app/src/main/resources/logback-spring.xml
Original file line number Diff line number Diff line change
@@ -1,23 +1,56 @@
<configuration>
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] [%X{userId}] %-5level %logger{36} - %msg %n"/>
<property name="ERROR_LOG_PATTERN"
value="&lt;@U07L8AX9B4N&gt; &lt;@U07L87A3WKY&gt;\n%d{yyyy-MM-dd HH:mm:ss} [%thread] [%X{userId}] %-5level %logger{36} - %msg %n"/>

<timestamp key="DateFormat" datePattern="yyyy-MM-dd"/>

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] [%X{userId}] %-5level %logger{36} - %msg %n</pattern>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>

<springProfile name="dev">
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<file>${LOG_PATH}/${DateFormat}/bottles-api.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/bottles-api-%i.log</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>10</maxHistory>
<totalSizeCap>30MB</totalSizeCap>
</rollingPolicy>
</appender>

<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="FILE"/>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>

<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>${LOGSTASH_HOST}:${LOGSTASH_PORT}</destination>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<includeMdc>true</includeMdc>
</encoder>
</appender>

<appender name="ASYNC_LOGSTASH" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="LOGSTASH"/>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>

<appender name="SLACK" class="com.github.maricn.logback.SlackAppender">
<webhookUri>${SLACK_WEBHOOK_URL}</webhookUri>
<channel>C07LHK2S0MV</channel>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] [%X{userId}] %-5level %logger{36} - %msg %n</pattern>
<pattern>${ERROR_LOG_PATTERN}</pattern>
</layout>
<username>Server-Error</username>
<iconEmoji>:rotating_light:</iconEmoji>
Expand All @@ -35,7 +68,8 @@
<appender-ref ref="CONSOLE"/>

<springProfile name="dev">
<appender-ref ref="LOGSTASH"/>
<appender-ref ref="ASYNC_FILE"/>
<appender-ref ref="ASYNC_LOGSTASH"/>
<appender-ref ref="ASYNC_SLACK"/>
</springProfile>
</root>
Expand Down
4 changes: 4 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,13 @@ services:
LOGSTASH_HOST: ${LOGSTASH_HOST}
LOGSTASH_PORT: ${LOGSTASH_PORT}
SLACK_WEBHOOK_URL: ${SLACK_WEBHOOK_URL}
LOG_PATH: /app/logs
ports:
- "8080"
volumes:
- ${FCM_ADMIN_KEY_PATH}:/app/config/bottles-firebase-adminsdk.json
- ${APPLE_KEY_ID_PATH}:/api/config/apple-auth-key.p8
- ${LOG_PATH}:/app/logs
depends_on:
- db

Expand Down Expand Up @@ -75,11 +77,13 @@ services:
LOGSTASH_HOST: ${LOGSTASH_HOST}
LOGSTASH_PORT: ${LOGSTASH_PORT}
SLACK_WEBHOOK_URL: ${SLACK_WEBHOOK_URL}
LOG_PATH: /app/logs
ports:
- "8080"
volumes:
- ${FCM_ADMIN_KEY_PATH}:/app/config/bottles-firebase-adminsdk.json
- ${APPLE_KEY_ID_PATH}:/api/config/apple-auth-key.p8
- ${LOG_PATH}:/app/logs
depends_on:
- db

Expand Down

0 comments on commit 15df9d3

Please sign in to comment.