Skip to content

Commit 2561348

Browse files
committed
feat: Docker 컨테이너에 CloudWatch Logs 연동 추가
- Staging/Production 모두 awslogs 드라이버 설정 - 로그 그룹: /ifu/{환경}/application - 로그 스트림: ifu-server-{환경}-{날짜시간}
1 parent 59bc99b commit 2561348

3 files changed

Lines changed: 62 additions & 2 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,15 @@ jobs:
6363
echo "Building Docker image..."
6464
docker build -t ifu-server:staging .
6565
66-
# 새 컨테이너 실행
66+
# 새 컨테이너 실행 (CloudWatch Logs 연동)
6767
echo "Starting new container..."
6868
docker run -d \
6969
--name ifu-server \
7070
--restart unless-stopped \
71+
--log-driver=awslogs \
72+
--log-opt awslogs-region=ap-northeast-2 \
73+
--log-opt awslogs-group=/ifu/staging/application \
74+
--log-opt awslogs-stream=ifu-server-staging-$(date +%Y%m%d-%H%M) \
7175
-p 8080:8080 \
7276
-e ENVIRONMENT=staging \
7377
-e TZ=Asia/Seoul \
@@ -161,10 +165,14 @@ jobs:
161165
docker stop ifu-server 2>/dev/null || true
162166
docker rm ifu-server 2>/dev/null || true
163167
164-
# 새 컨테이너 실행
168+
# 새 컨테이너 실행 (CloudWatch Logs 연동)
165169
docker run -d \
166170
--name ifu-server \
167171
--restart unless-stopped \
172+
--log-driver=awslogs \
173+
--log-opt awslogs-region=ap-northeast-2 \
174+
--log-opt awslogs-group=/ifu/prod/application \
175+
--log-opt awslogs-stream=ifu-server-prod-$(date +%Y%m%d-%H%M) \
168176
-p 8080:8080 \
169177
-e ENVIRONMENT=prod \
170178
-e TZ=Asia/Seoul \

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ dependencies {
4444
/* === Observability / Docs === */
4545
implementation 'org.springframework.boot:spring-boot-starter-actuator'
4646
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.6'
47+
implementation 'net.logstash.logback:logstash-logback-encoder:8.1'
4748

4849
/* === Infra / External === */
4950
implementation platform("io.awspring.cloud:spring-cloud-aws-dependencies:3.2.1")
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration>
3+
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
4+
5+
<springProperty scope="context" name="APP_NAME" source="spring.application.name" defaultValue="ifu-server"/>
6+
<springProperty scope="context" name="ENVIRONMENT" source="sentry.environment" defaultValue="local"/>
7+
8+
<!-- 콘솔 출력 (로컬 개발용) -->
9+
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
10+
<encoder>
11+
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) [%thread] %cyan(%logger{36}) - %msg%n</pattern>
12+
</encoder>
13+
</appender>
14+
15+
<!-- JSON 출력 (운영 환경용) -->
16+
<appender name="JSON" class="ch.qos.logback.core.ConsoleAppender">
17+
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
18+
<customFields>{"service":"${APP_NAME}","environment":"${ENVIRONMENT}"}</customFields>
19+
<includeMdc>true</includeMdc>
20+
<includeContext>false</includeContext>
21+
<includeCallerData>false</includeCallerData>
22+
<timestampPattern>yyyy-MM-dd'T'HH:mm:ss.SSS'Z'</timestampPattern>
23+
<timeZone>UTC</timeZone>
24+
<shortenedLoggerNameLength>36</shortenedLoggerNameLength>
25+
</encoder>
26+
</appender>
27+
28+
<!-- 로컬: 콘솔 포맷 -->
29+
<springProfile name="local">
30+
<root level="INFO">
31+
<appender-ref ref="CONSOLE"/>
32+
</root>
33+
<logger name="com.ifu" level="DEBUG"/>
34+
</springProfile>
35+
36+
<!-- 스테이징: JSON 포맷 -->
37+
<springProfile name="staging">
38+
<root level="INFO">
39+
<appender-ref ref="JSON"/>
40+
</root>
41+
<logger name="com.ifu" level="DEBUG"/>
42+
</springProfile>
43+
44+
<!-- 운영: JSON 포맷 -->
45+
<springProfile name="prod">
46+
<root level="INFO">
47+
<appender-ref ref="JSON"/>
48+
</root>
49+
<logger name="com.ifu" level="INFO"/>
50+
</springProfile>
51+
</configuration>

0 commit comments

Comments
 (0)