-
Spring Boot - SLF4J로 Log남기기Spring Boot 2023. 7. 1. 01:50반응형
SLF4J란?
Simple Logging Facade 4 Java(간단한 자바를 위한 로깅 파사드)
SLF4J는 다양한 로깅 프레임워크에 대한 인터페이스 모음입니다.
SLF4J는 많은 로깅 프레임워크를 하나의 방식으로 사용할 수 있는 방법을 제공해 줍니다.
SLF4J는 인터페이스 프레임워크이기 때문에 단독으로 사용하지 않고, 로깅 프레임워크와 함께 사용합니다.
스프링 부트에서는 기본적으로 SLF4J와 Logback을 사용하고 있습니다.
로그 레벨
로그의 레벨은 5개입니다.
출력 레벨의 설정에 따라 설정 레벨과 그보다 레벨이 높은 로그를 출력합니다.
아래로 내려갈수록 높은 레벨입니다.
1. trace: debug레벨보다 더 상세한 정보를 표시
2. debug: 디버깅을 위한 정보를 표시
3. info: 정보성 로그를 표시
4. warn: 시스템 에러의 원인이 될 수 있는 경고성 메시지를 표시
5. error: 요청을 처리하는 중 오류가 발생한 경우 표시
로그 레벨 설정
logback설정 또는 스프링 설정(application.properties or yml)에서 레벨 설정이 가능합니다.
application.properties 설정 전체 레벨 설정 logging.level.root=info 패키지별 레벨 설정 logging.level.org.springframework=info logging.level.org.hugopark.test=debug
로그 찍기
Logger 객체
Logger객체를 불러와야 로그를 찍을 수 있다.
Logger객체를 불러오는 방법은 LoggerFactory와 어노테이션 @Slf4j 가 있습니다.
// LoggerFactory private final Logger log = LoggerFactory.getLogger(getClass())
// @Slf4j 어노테이션 @Slf4j public class ExampleService { }
Logger 사용하기
logger는 기본적으로 치환문자를 지원합니다.
주의할 점)
로그를 찍을 때 문자와 문자열을 직접 연산하게 되면 로그를 찍기도 전에 문자열 연산이 일어나서 컴퓨팅 자원을 사용하기 때문에 성능이 떨어지게 되어서 잘못된 사용법입니다. 치환을 애용합시다..
치환을 사용하면 성능 개선도 되고, 로그를 찍는 코드의 가독성도 높아지기 때문에 치환을 사용해야 합니다.
올바른 예
String name = "박종연"; log.debug("hello, {}", name);
틀린 예
String name = "박종연"; log.debug("hello, "+name);
예외 로그 찍기
Exception Stack Trace
SLF4J는 Throwable객체를 파라미터로 넘기게 되면 Stack Trace를 로깅시켜 줍니다.
try { throw new Exception(); } catch(Exception ex) { log.error("Error on: ", ex); } -> Error on: java.lang.Exception: Test at hello.itemservice.web.basic.BasicItemController.init(BasicItemController.java:38) ~[classes/:na] at hello.itemservice.web.basic.BasicItemControllerTest.initTest(BasicItemControllerTest.java:25) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] ...
Exception Message
Exception Message는 치환문자를 이용하여 exception의 메세지를 넘겨주면 됩니다.
try { throw new Exception("Error Message Test"); } catch(Exception ex) { log.error("Error Message: {}", ex.getMessage()); }
반응형'Spring Boot' 카테고리의 다른 글
2022.07.06 Spring Mock 사용해보기 (0) 2022.07.06