Skip to content

[LOG] 로그 세팅

우가 edited this page Aug 21, 2023 · 1 revision

Logback 이란?

springboot 에서 기본적으로 설정되어 있는 로깅 프레임워크이다.

로그 세팅을 따로 추가한 이유?

서버에서 nohup 으로 실행을 했을 때, console 로 출력되는 로그를 확인할 수 없던 점

그래서 해결 방안으로 배포 스크립트에 >> application.log 2> /dev/null & 를 추가했습니다.

하지만, warn 또는 error 로그를 따로 확인을 하고 싶어서 logback 설정을 하게 되었습니다.

Logback xml 설정 해보기

먼저 xml 설정을 하기 위해선, logback-spring.xml 을 생성해야 합니다.

아래는 펀잇팀 logback-spring.xml 설정입니다.

펀잇팀 logback-spring.xml

첫번째와 두번째 박스를 보면, defaults.xml 과 console-appender.xml 를 include 해주는 모습입니다.

  • spring boot 에서 지정한 기본 설정을 포함한다는 의미입니다.

세번째 박스 logback-spring-${spring.profiles.active}.xml 입니다.

  • 서버가 실행될 때 어떤 profile 로 실행되는지 변수를 받아와서 해당 환경에 맞는 로그 설정을 읽겠다는 의미입니다.

환경 별 로그 설정하기

logback-spring-dev.xml 이 파일을 보겠습니다.

중요한 두가지 설정이 있습니다.

  1. appender

    • 로그가 출력되는 위치
  2. logger

    • 로그 메세지를 appender 에 전달

appender

  1. console appender
  2. file appender
  3. rollingFile appender
  4. smtp appender
  5. db appender

등등 여러 appender 가 있습니다. 저희는 rollingfile appender 를 설정했습니다.

그 이유는 console 로 확인을 할 수 없었고, 그냥 file appender 는 한 파일이 너무 커지기 때문에 고려하지 않았습니다.

다음 smtp 나 db 는 해당 작업 리소스가 크다고 예상하고 적용하지 않았습니다.

Rolling Appender

Rolling appender 를 사용하면 특정 크기나 시간에 도달하면 새로운 파일로 교체됩니다.

error appender

위 그림을 보면서 알아보겠습니다.

  1. LevelFilter

    • 로그 레벨에 따라 로그 메시지를 필터링합니다.
    • <level> 어떤 레벨의 로그를 수락하는지 결정합니다.
    • <onMatch>ACCEPT</onMatch> 위 level 과 일치하는 로그 메시지를 허용합니다.
    • <onMismatch>DENY</onMismatch> 위 level 과 일치하지 않는 로그는 전부 다 걸러냅니다.
  2. 로그가 기록될 기본 파일의 경로를 정의합니다.

  3. SizeAndTimeBasedRollingPolicy

    • 롤링 정책 중 하나로 파일 크기와 시간 두가지 설정을 가지고 파일을 결정합니다.
    • <fileNamePattern>~~~/%d{yyyy-MM-dd}_%i.log</fileNamePattern> 같은 시간 파일이 생성되게 되면 %i 로 0,1,2.. 순으로 숫자가 올라가면서 파일이 생성됩니다.
    • <maxFileSize></maxFileSize> 로그 파일이 해당 크기에 도달하게 되면 새로운 파일로 교체됩니다.
    • <maxHistory></maxHistory> 로그 파일이 해당 기간을 넘기게 되면 자동 삭제됩니다.
  4. encoder

    • 로그 메시지의 형태를 결정합니다.
    • outputPatternAsHeader 는 로그가 시작될 때 맨 위에 어떤 패턴인지 명시해줍니다.

로그 정책을 정하며,,,

서버의 리소스를 얼마나 잡아 먹는지, 로그는 얼마나 찍히는 지 확인해야 하지만 아직은 감으로 설정한 상태입니다.

특정 기간을 잡고 서버의 상태를 확인해가며 적절한 SizeAndTimeBasedRollingPolicy 설정을 해야합니다!

🔐 공통

🔑 프론트엔드

🔒 백엔드

📝 회의록

🤩 데모데이

Clone this wiki locally