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
GitHub - HyunAh-iia/spring-logging: Spring Boot Logging HTTP with Trace Id Using Logback and AWS CloudWatch
Spring Boot Logging HTTP with Trace Id Using Logback and AWS CloudWatch - GitHub - HyunAh-iia/spring-logging: Spring Boot Logging HTTP with Trace Id Using Logback and AWS CloudWatch
github.com
반응형
'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
댓글을 사용할 수 없습니다.