Spring Logging (2) : Console Log? AWS CloudWatch? 실행환경별로 로그 남기기
반응형
이전 포스팅에서 HTTP별로 Trace Id를 부여하고, 각 HTTP 요청과 응답에 대해 콘솔 로그를 출력하는 부분을 다뤘다. 이번 포스팅에서는 Spring Active Profile에 따라 콘솔로그를 출력할지, AWS CloudWatch로 로그를 전송할 지 설정하는 부분을 안내한다.
만약 Active Profile이 dev, prod라면 AWS의 CloudWatch로 보내고, 그 외의 경우 콘솔로그를 출력하도록 한다. (AWS IAM 사용자에게 CloudWatch 정책 권한을 넣어두자.)
build.gradle 의존성 추가
dependencies {
...
implementation 'ca.pjer:logback-awslogs-appender:1.4.0' //logback to aws cloudwatch
...
}
AWS 권한 설정
@Configuration
public class AmazonConfiguration {
private final Logger log = LoggerFactory.getLogger(AmazonConfiguration.class);
// @Value("${AWS_ACCESS_KEY}")
private String accessKey = "AWS_액세스키";
// @Value("${AWS_SECRET_KEY}")
private String secretKey = "AWS_시크릿키";
private AWSCredentials awsCredentials;
@PostConstruct
public void init() {
awsCredentials = new BasicAWSCredentials(accessKey, secretKey);
}
@Bean
public AWSCredentialsProvider awsCredentialsProvider() {
return new AWSStaticCredentialsProvider(awsCredentials);
}
}
Logback 설정파일 수정
한글로 기재된 부분은 각자 프로젝트에 맞게 적절한 네이밍을 하도록 하자.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<springProfile name="!(dev | prod)">
<root level="debug">
<appender name="CONSOLE_LOG" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %magenta([traceId=%X{traceId}]) %highlight(%-5level) %logger{36}.%M - %msg%n</pattern>
</encoder>
</appender>
</root>
</springProfile>
<springProfile name="dev | prod">
<root level="info">
<appender name="CLOUDWATCH_LOG" class="ca.pjer.logback.AwsLogsAppender">
<layout>
<pattern>[traceId=%X{traceId}] %-5level %logger{36}.%M - %msg%n</pattern>
</layout>
<logGroupName>로그그룹명을 기재</logGroupName>
<logStreamUuidPrefix>프리픽스(Optional)</logStreamUuidPrefix>
<logRegion>ap-northeast-2</logRegion>
<maxBatchLogEvents>50</maxBatchLogEvents>
<maxFlushTimeMillis>30000</maxFlushTimeMillis>
<maxBlockTimeMillis>5000</maxBlockTimeMillis>
<retentionTimeDays>0</retentionTimeDays>
</appender>
</root>
</springProfile>
</configuration>
전체 샘플 코드는 Github에서 확인할 수 있다.
https://github.com/HyunAh-iia/spring-logging
반응형
'Programming > SpringBoot' 카테고리의 다른 글
Spring Logging (1) : HTTP Request/Response 로그 남기기 (5) | 2021.10.29 |
---|---|
Filter, Interceptor, AOP의 간단 용도 (0) | 2021.10.23 |
Spring JSR 380 Validation 적용과 테스트 코드 작성 (0) | 2020.11.01 |
Jackson Property - Custom PropertyNamingStrategy 적용 (2) | 2020.07.16 |
Springboot EhCache 3 - 환경설정부터 self-invocation 처리까지 (6) | 2020.07.12 |
댓글
이 글 공유하기
다른 글
-
Spring Logging (1) : HTTP Request/Response 로그 남기기
Spring Logging (1) : HTTP Request/Response 로그 남기기
2021.10.29 -
Filter, Interceptor, AOP의 간단 용도
Filter, Interceptor, AOP의 간단 용도
2021.10.23 -
Spring JSR 380 Validation 적용과 테스트 코드 작성
Spring JSR 380 Validation 적용과 테스트 코드 작성
2020.11.01 -
Jackson Property - Custom PropertyNamingStrategy 적용
Jackson Property - Custom PropertyNamingStrategy 적용
2020.07.16