cso6005 / TIL-Troubleshooting

배움 기록 및 트러블 슈팅 정리
0 stars 0 forks source link

[Spring Boot] 로그 처리 Logback #27

Open cso6005 opened 1 year ago

cso6005 commented 1 year ago

Logback

Logback 설정

일반적으로 Classpath 에 있는 logback 설정 파일을 참조하게 됨.

로그 레벨

  1. ERROR : 로직 수행 중에 오류가 발생한 경우, 시스템적으로 심각한 문제가 발생하여 작동이 불가한 경우
  2. WARN : 시스템 에러의 원인이 될 수 있는 경고 레벨, 처리 가능한 사항
  3. INFO : 상태 변경과 같은 정보성 메시지. 정보를 전달하기 위한 로그 레벨
  4. DEBUG : 어플리케이션의 디버깅을 위한 메시지 레벨
  5. TRACE : DEBUG 레벨보다 더 디테일한 메시지를 표현하기 위한 레벨. 많이 사용되지는 않음.
cso6005 commented 1 year ago

Logback 구조

  1. appender : Log 의 형태 및 어디에 출력할 지 설정
    • 대표적인 Appender 형식은 아래와 같음.
    • ConsoleAppender : 콘솔에 로그를 출력
    • FileAppender : 파일에 로그를 저장
    • RollingFileAppender : 여러 개의 파일을 순회하며 로그를 저장
    • SMTPAppender : 로그를 메일로 보냄
    • DBAppender : 데이터베이스에 로그를 저장
  2. encoder : Appender 내에 포함되는 항목이며, pattern 을 사용하여 원하는 형식으로 로그를 표현할 수 있음.
  3. root : 설정한 Appender 를 참조하여 로그의 레벨을 설정할 수 있음.
    • root 는 전역 설정, logger 는 지역설정이 가능하다.
    • 지역 설정의 경우 특정 패키지마다 특정 레벨을 사용하라는 설정이 가능하다.
cso6005 commented 1 year ago

Pattern

Pattern | 의미 -- | -- %logger{length} | LoggerName. 경로의 경우 길기에 보통 글자 수 제한한다. %-5level | 로그 레벨. -5 는 출력의 고정폭 값을 뜻함. %msg (%message) | 로그 메시지 영역 ${PID:-} | 프로세스 id %d | 로그 기록 시간 %p | 로깅 레벨 %F | 로깅이 발생한 프로그램 파일명 %M | 로깅이 발생한 메소드의 이름 %I | 로깅이 발생한 호출지의 정보 %L | 로깅이 발생한 호출지의 라인수 %thread | 현재 Tread 명 %t | 로깅이 발생한 Thread 명 %c | 로깅이 발생한 카테고리 %C | 로깅이 발생한 클래스 명 %m | 로그 메세지 %n | 줄바꿈 %% | % 출력 %r | 어플리케이션 실행 후 로깅이 발생한 시점까지의 시간
cso6005 commented 1 year ago

encoder - Pattern 예시

EX) /…/src/main/resources/logback-spring.xml

<!-- console -->
  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>DEBUG</level>
    </filter>
    <encoder>
      <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] %logger{30} %msg%n</pattern>
    </encoder>
  </appender>
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] %logger{30} %msg%n</pattern>

출력 결과 예시

[2023-01-26 19:10:52.547] [WARN ] [http-nio-8080-exec-3] io.star.model.ELKService [ELKService][getData] - ElasticSearch 9200 서버 꺼져있음. :: Response = ResponseEntity<ErrorResponse> :: 1046ms
cso6005 commented 1 year ago