Skip to content

Commit

Permalink
Merge pull request #107 from Seasoning-Today/refactor/#97-centralized…
Browse files Browse the repository at this point in the history
…-logging

중앙 집중식 로깅 구현
  • Loading branch information
csct3434 authored Mar 29, 2024
2 parents d3d7fdd + 6986df9 commit a6163ff
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 1 deletion.
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ dependencies {
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.3'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.3'

// logback-awslogs-appender
implementation "ca.pjer:logback-awslogs-appender:1.6.0"

testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testImplementation 'io.rest-assured:rest-assured'
Expand Down
7 changes: 6 additions & 1 deletion src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,9 @@ spring:
on-profile: prod
import: secret/application-prod-config.yml


---
spring:
config:
activate:
on-profile: dev
import: secret/application-dev-config.yml
56 changes: 56 additions & 0 deletions src/main/resources/logback-spring.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!-- AWS 자격증명 설정 -->
<springProperty scope="context" name="AWS_ACCESS_KEY" source="cloud.aws.credentials.access-key"/>
<springProperty scope="context" name="AWS_SECRET_KEY" source="cloud.aws.credentials.secret-key"/>

<!-- 콘솔 로그 패턴 정의 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<property name="CONSOLE_LOG_PATTERN" value="${LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){blue} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

<!-- 콘솔에 로그를 출력해주는 ConsoleAppender 설정 -->
<appender name="console_log" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>

<!-- CloudWatch에 로그를 전송해주는 AwsLogsAppender 설정 -->
<appender name="aws_cloud_watch_log" class="ca.pjer.logback.AwsLogsAppender">
<encoder>
<pattern>[%thread] [%level] [%file:%line] - %msg%n</pattern>
</encoder>
<logGroupName>ec2-asg</logGroupName>
<logStreamUuidPrefix>application-log-</logStreamUuidPrefix>
<logRegion>ap-northeast-2</logRegion>
<maxBatchLogEvents>50</maxBatchLogEvents>
<maxFlushTimeMillis>30000</maxFlushTimeMillis>
<maxBlockTimeMillis>5000</maxBlockTimeMillis>
<retentionTimeDays>30</retentionTimeDays>
<accessKeyId>${AWS_ACCESS_KEY}</accessKeyId>
<secretAccessKey>${AWS_SECRET_KEY}</secretAccessKey>
</appender>

<!-- local 환경에서는 ConsoleAppender 사용 -->
<springProfile name="local">
<root level="INFO">
<appender-ref ref="console_log"/>
</root>
</springProfile>

<!-- dev 환경에서는 ConsoleAppender 사용 -->
<springProfile name="dev">
<root level="INFO">
<appender-ref ref="console_log"/>
</root>
</springProfile>

<!-- prod 환경에서는 AwsLogsAppender 사용 -->
<springProfile name="prod">
<root level="INFO">
<appender-ref ref="aws_cloud_watch_log"/>
</root>
</springProfile>
</configuration>

0 comments on commit a6163ff

Please sign in to comment.