slf4j/logback으로 CloudWatch Logs에 로그를 보내는 단일 Java 응용 프로그램

아직 잊지 않은 틈을 타서 적어라.클라우드워치 로그에 로그를 보내는 메커니즘을 이해하기 위해 샘플을 만들었지만, 참고할 사이트를 찾기가 쉽지 않기 때문이다.

전제 조건

  • 되도록 하기 싫다→Giithub 같은 OSS를 이용한다
  • 최소한의 코드로 보내고 싶어
  • Gradle
  • 지원

    결실


    이렇게 됐어.

    사용된 OSS


    cloudwatch-logback-appender
    https://github.com/j256/cloudwatch-logback-appender

    사용법


    logback.xml의 내용을 편집하면 어느 정도 로그를 자유롭게 재생할 수 있습니다.
        <appender name="CLOUDWATCH" class="com.j256.cloudwatchlogbackappender.CloudWatchAppender">
            <region>us-east-1</region>
            <accessKeyId>XXXXXXX</accessKeyId>
            <secretKey>XXXXXXX</secretKey>
            <logGroup>test-loggroup</logGroup>
            <logStream>test-logstream</logStream>
            <layout>
                <pattern>[%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - %msg%n</pattern>
            </layout>
            <maxBatchSize>32</maxBatchSize>
        </appender>
    
    accessKeyIdsecretKey 항목 자체를 삭제하면 실행기기의 AWSConfig를 보러 갈 것 같다(시도는 안 했지만)

    실행 결과


    로그가 CloudWatch Logs로 순조롭게 출력됩니다.(로그 그룹이나 로그 흐름이 없으면 만들 수 있음)

    주의점


    물론 라이브러리에서 클라우드워치 로그스에 데이터를 보내기 위해 다양한 초기화와 데이터 전송이 이뤄진다.그 처리가 스레드에 의해 실행되기 때문에 호출된 원본의 Logging 처리 종료 응용 프로그램이 끝나면 하위 스레드도 자동으로 종료되고 로그는 CloudWatch Logs에 전송되지 않습니다.(실제로 나는 이런 단일 앱으로 로그를 보내지 않을 것 같아서 그렇게 신경 쓸 필요가 없다고 생각한다.) 나는 OSS 측의 출처를 보고 나서야 비로소 발견했다.
    이를 피하기 위해 20초가량 슬리프 처리를 설치에 넣었다.

    총결산


    주의사항에 빠지지 않는 부분만 있으면 쉽게 실현될 수 있다.

    좋은 웹페이지 즐겨찾기