공부/Java

[Java] Logging, SLF4J, Logback

줭♪(´▽`) 2021. 10. 6. 14:55

1. Logging

- 프로그램 개발 중이나 완료 후 발생할 수 있는 오류에 대해 디버깅하거나 운영 중인 프로그램 상태를 모니터링하기 위해 필요한 정보(로그)를 기록하는 것

- java.util.logging, logback, log4j 등 다양한 Logging Framework 존재

 

2. SLF4J(Simple Logging Facade for Java)

- 다양한 Logging Framework들의 추상화를 제공 (단독 사용 X)

 

- Facade 패턴 -> 구현체의 종류에 상관없이 일관된 로깅 코드 작성 가능

- 개발에서 SLF4J API를 사용하여 로깅 코드를 작성

- 배포에서 바인딩된 Logging Framework가 실제 로깅 코드 수행


- Springboot의 기본 Logging Framework

 

3. Logback

1) 특징

- log4j의 후속 Logging 라이브러리

- log4j보다 빠른 수행과 적은 메모리 점유

- xml로 logging을 설정함 (logback.xml)

- 자동적으로 오래된 로그 지우고 백업이 가능함

 

2) 구조

① Logger

- 로그의 주체, 메시지 전달

- 특정 패키지 안의 특정 레벨 이상인 것에 대해 출력

 

② Appender

- 어디에 출력할 것인지에 대해 기술

- ConsoleAppender : 콘솔에 로그 기록

- FileAppender : 파일에 로그 기록

- RollingFileAppender : 여러 개의 파일을 순회하며 로그 기록

- SMTPAppender : 메일로 로그 기록

- DBAppender : DB에 로그 기록

 

③ Encoder

- 어떻게 출력할 것인지에 대해 기술

- 메시지 포맷

 

3) 레벨

 

ERROR < WARN < INFO < DEBUG < TRACE

 

- 설정된 로그 레벨에 따라 하위 레벨을 포함하여 로그 출력

ex) 레벨이 INFO인 경우 ERROR, WARN, INFO 레벨 로그만 출력

 

4) logback.xml

<appender> : 출력 위치 지정 (Appender 지정)

  <encoder> : 출력 pattern 지정

  <file> : 로그 파일 저장 위치 및 이름 지정

  <rollingPolicy> : 오래된 로그 백업 및 삭제

     <fileNamePattern> : 백업 파일 이름

     <maxHistory> : 최대 저장 기간(일)

     <totalSizeCap> : 파일 용량

 

<root level="INFO"> : 로그 레벨 지정

   <appender-ref ref="NAME" /> : 해당되는 Appender 지정

 

 

+) logback 사용

 

// logger 선언
private static final Logger logger = LoggerFactory.getLogger(클래스이름.class);

// logger 사용
logger.debug("debug {}", 변수);
logger.error("error {}", 변수);

 

 

'공부 > Java' 카테고리의 다른 글

[Java] String.valueOf() vs Integer.toString()  (0) 2021.10.07
[Java-14] 람다식(Lambda expression)  (0) 2021.07.06
[Java-13] 쓰레드(Thread)  (0) 2021.07.06
[Java-12] 애너테이션(Annotation)  (0) 2021.07.02
[Java-12] 열거형(Enums)  (0) 2021.07.02