우아한테크코스/레벨4, 레벨5

[팀 프로젝트] 로깅 설정 개선하기

nauni 2021. 10. 2. 14:05

기존 설정해 놓은 로깅 설정을 확인하고 개선할 부분이 있는지 확인하였다.

 

  • 설정파일을 좀 더 가독성 좋게 분리
  • gradle dependency를 줄임
  • dev 서버에도 cloudwatch 모니터링을 도입
  • 기존 파일로 저장되던 로그파일 구조 개선
    • 백업 디렉토리를 생성하여 당일 로그파일과 과거 로그파일을 분리
    • 레벨별로 분리해주어 확인이 가능하도록 설정

수정내용

  1. 로그 패키지 구조
    • appender 디렉토리 생성 후 로그 레벨별로 어펜터를 설정하여 추가
    • appender 설정과 사용을 분리하여 logback-* 에서 include 하여 appender를 사용하는 방식으로 수정
    • logback.xml의 삭제 (logback-spring에 설정내용 통합)
      appender 설정
  2. 로그 저장 파일 구조
    • 기존 logs 에 다같이 저장 -> logs에 당일 내용 저장, 자정이 지나면 backup 디렉토리로 이동
    • 로그 레벨별로 저장하여 윗단의 로그부터 차례대로 확인이 가능 
    • 하루가 지나면 backup 디렉토리에 날짜별로 저장
  3. 설정수정
    • logback.xml, logback-spring.xml 로 나눠져있던 내용을 logback-spring.xml 로 통합
      • 기존 logback 설정이 들어가고 logback-spring 설정이 실행되지 않고 있었음
    • dependency 삭제
      • AWS log appender  --> (파일을 읽는 방식으로 변경)
      • 분기로직 처리 의존성 제거 --> (SpringProfile 로 분기처리)
      • 외부 dependency를 줄이고 기존에 기능을 최대한 활용
    • 레벨별로 해당 레벨 이상 로그 파일 분리
    • flyway 설정 삭제 -> flyway 설정 충돌로 애플리케이션이 실행되지 못하면 error 로그에 출력됨
    • local, test: file저장 -> 콘솔에만 출력
    • dev : INFO 레벨 이상 -> DEBUG 레벨이상
    • prod, was1, was2: INFO 레벨 이상(저장되는 파일은 없었음) -> INFO레벨 이상 파일로 저장 
      • cloudwatch 에만 남는 로그보단 나중에 디버깅을 위해 로그 파일로도 남는 것이 좋다고 판단
      • 해당 로그 레벨 이상을 출력하기 위해서는 Filter가 아닌 ThredholdFilter를 사용(Filter 는 exact 로 레벨을 거른다)

4. dev서버에도 cloudwatch 설정

  • 기존에는 main 서버만 cloudwatch 모니터링이 가능했으나 dev 서버도 cloudwatch 도입
  • dev 서버에 cloudwatch agent 를 도입하여 설정 `/opt/aws/amazon-cloudwatch-agent/bin/config.json`

image

 

참고