티스토리 뷰

스프링 부트를 사용하면 기본적으로 스프링 부트 로깅 라이브러리가 포함됨!

 

🙋🏻‍♀️ 스프링 부트가 사용하는 로깅 라이브러리가 뭐죠?

✔️ SLF4J

https://www.slf4j.org/

 

SLF4J

Simple Logging Facade for Java (SLF4J) The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framewor

www.slf4j.org

✔️ Logback

https://logback.qos.ch/

 

Logback Home

Logback Project Logback is intended as a successor to the popular log4j project, picking up where log4j 1.x leaves off. Logback's architecture is quite generic so as to apply under different circumstances. At present time, logback is divided into three mod

logback.qos.ch

: 로그 라이브러리는 Logback 외에도 무수히 많은데, 그것을 통합해서 인터페이스로 제공하는 것이 SLF4J! 간단하게 말하자면, 스프링 부트 로깅 라이브러리는 SLF4J가 인터페이스이고 구현체가 Logback

 

📌 로깅 해보자!

@Slf4j
@RestController
public class LogTestController {

    @RequestMapping()
    public String logTest() {
        String name = "log message";
      
        log.trace("trace log={}", name);
        log.debug("debug log={}", name);
        log.info(" info log={}", name);
        log.warn(" warn log={}", name);
        log.error("error log={}", name);
      
        return "ok";
    } 
}
// 로그가 출력되는 포맷
시간 로그 레벨 프로세스ID 쓰레드명 클래스명 로그메시지

✔️ 롬복 라이브러리를 사용한다면 @SLF4J 애노테이션만으로 사용 가능!

✔️ 아니면, 클래스에 아래와 같이 로그를 선언 후 사용

@RestController
public class LogTestController {
    
    private Logger log = LoggerFactory.getLogger(getClass());
    
    // ...
}

 

🙋🏻‍♀️ 로그 레벨?

TRACE > DEBUG > INFO > WARN > ERROR

: 보통 개발 서버는 debug, 운영 서버는 info 레벨까지 출력

✔️ 로그 레벨 설정(application.properties)

#전체 로그 레벨 설정(기본 info) 
logging.level.root=info

#hello.springmvc 패키지와 그 하위 로그 레벨 설정 
logging.level.hello.springmvc=debug

 

주의

log.debug("data="+data) //안티 패턴!
log.debug("data={}", data)

: 1번째 줄 처럼 로그를 사용하면 로그 출력 레벨이 info여도 인수값인 "data="+data는 연산이 된다! (불필요한 연산 발생) 따라서, 2번째 줄처럼 로그를 써야한다!

 

🙋🏻‍♀️ 로그, 왜쓰는데?

✔️ 쓰레드 정보, 클래스 이름 같은 부가 정보 + 출력 모양 조정O

✔️ 로그 레벨에 따라 로그를 상황에 맞게 조절O (ex. 개발서버, 운영서버)

✔️ 콘솔 뿐만 아니라 파일, 네트워크 등 별도의 위치에도 로그를 남길 수 있음

✔️ 성능이 System.out 보다 좋음

 

 

'백엔드 > Spring' 카테고리의 다른 글

[오류] Attempt to recreate a file for type  (0) 2023.07.07
API 예외처리  (0) 2023.07.07
HTTP 요청(Request) 메시지 로그 남기기  (0) 2023.07.06
프로젝트 환경설정  (0) 2023.07.06
빌드하기  (0) 2023.07.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함