CloudWatch를 이용한 로그관리

코딩을 합시다·2023년 2월 28일
0

Spring에서 CloudWatch로 log를 전송할 수 있도록 도와주는 라이브러리를 추가해줍니다.

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

그리고 CloudWatch에서 log를 저장할 로그 그룹을 생성해 줍니다.

IAM 사용자 권한도 추가해줍니다.

IAM 사용자에 CloudWatchFullAccess를 추가해줍니다

이제 스프링 프로젝트로 넘어가서 logback-spring.xml 파일을 작성해줍니다.

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds">
    <springProperty name="AWS_ACCESS_KEY" source="cloud.aws.credentials.access-key"/>
    <springProperty name="AWS_SECRET_KEY" source="cloud.aws.credentials.secret-key"/>

    <appender name="AWS_CLOUD_WATCH_LOG" class="ca.pjer.logback.AwsLogsAppender">
        <layout>
            <pattern>[%thread] [%date] [%level] [%file:%line] - %msg%n</pattern>
        </layout>
        <logGroupName>DorunLog</logGroupName>
        <logStreamUuidPrefix>DorunLog</logStreamUuidPrefix>
        <logRegion>ap-northeast-2</logRegion>
        <maxBatchLogEvents>50</maxBatchLogEvents>
        <maxFlushTimeMillis>30000</maxFlushTimeMillis>
        <maxBlockTimeMillis>5000</maxBlockTimeMillis>
        <retentionTimeDays>0</retentionTimeDays>
        <accessKeyId>${AWS_ACCESS_KEY}</accessKeyId>
        <secretAccessKey>${AWS_SECRET_KEY}</secretAccessKey>
    </appender>

    <root level="info">
        <appender-ref ref="AWS_CLOUD_WATCH_LOG" />
    </root>
</configuration>

logGroupName: CloudWatch log Group Name
logStreamUuidPrefix: 로그들의 이름이 겹치지않게 uuid를 권장하고 있습니다.
logRegion: CloudWatch AWS Region
maxBatchLogEvents: 한 번에 전송할 로그 이벤트의 최대 개수를 지정합니다.
maxFlushTimeMillis: 로그 이벤트를 전송하기 전에 최대로 대기할 시간을 밀리초 단위로 지정합니다.
maxBlockTimeMillis: 전송할 로그 이벤트가 없는 경우 최대 대기할 시간을 밀리초 단위로 지정합니다.
retentionTimeDays: 로그그룹의 보존기간을 얘기합니다. 0으로 세팅하면 보존기간은 무기한으로 보존됩니다.
accessKeyId: AWS IAM Access Key (위에서 SpringProperty로 yml에서 읽어온 것 사용하기)
secretAccessKey: AWS IAM Secret Key (위에서 SpringProperty로 yml에서 읽어온 것 사용하기)

이제 서버를 실행시키고 로그가 제대로 찍히나 확인해보자.

로그가 제대로 찍히고 있다는 것을 확인할 수 있었다.

0개의 댓글