-
Spring MVC - 로깅(Logging) 간단히 알아보자(SLF4J, Logback)Spring/Spring MVC 2022. 1. 28. 16:38728x90반응형
로깅(Logging)이란?
로깅은 정보를 제공하는 일련의 기록인 로그를 생성하도록 시스템을 작성하는 활동을 말한다. 따라서 웹 애플리케이션이 작동하는데 중요 기능이 실행되는 부분에는 적절한 로그를 남겨 시스템 상태/작동 정보를 시간의 경과에 따라 기록하여 사용한다. 저장된 로그는 사용자의 패턴이나 시스템 동작 자체의 분석에 사용될 수 있으며 해킹이나 침입 등의 사고가 발생한 경우 비정상 동작의 기록을 통해 추적을 수행할 수 있도록 돕는다.
우리는 간단하게 System.out.println을 이용하여 입출력 및 변수 값들을 출력하여 로그를 생성할 수 있지만 로그의 양이나 수준을 조절할 수 없고, 출력된 로그를 파일 등에 저장하기도 불편하다. 또한 System.out.println을 자주 이용하다 보면 웹 어플리케이션의 속도가 상당히 느려진다. 따라서 실무에서는 System.out.println을 사용하여 로그를 남기지 않는다.
실제로 로깅을 할 때는 따로 로깅 라이브러리를 사용하며 수많은 로깅 라이브러리가 존재하는데 스프링 부트 로깅 라이브러리는 기본적으로 SLF4J와 Logback을 사용한다. SLF4J 라이브러리는 Logback, Log4J, Log4J2 등을 통합하여 인터페이스로 제공하는 라이브러리이다.
로그 사용시 장점
- 쓰레드 정보, 클래스 이름 같은 부가 정보를 함께 볼수 있고, 출력 모양을 조정할 수 있다.
- 로그 레벨에 따라 개발 서버에서는 모든 로그를 출력하고,
운영서버에서는 출력하지 않는 등 로그를 상황에 맞게 조절할 수 있다. - 파일이나 네트워크 등, 로그를 별도의 위치에 남길 수 있다.
로깅 사용법
간단한 코드로 로그를 콘솔에 출력하는 방법에 대해 알아보자.
/log-test URI로 요청
package hello.springmvc.basic; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @Slf4j //자동으로 해당 코드를 넣어준다 //private final Logger log = LoggerFactory.getLogger(getClass()); @RestController public class LogTestController { // private final Logger log = LoggerFactory.getLogger(getClass()); @RequestMapping("/log-test") public String logTest() { String name ="Spring"; System.out.println("name = " + name); // 원하는 로그 레벨을 기록할 수 있다. 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
- 라이브러리들을 하나의 통일된 방식으로 사용할 수 있는 방법을 제공
- 자동으로 해당 코드를 넣어준다.
- private final Logger log = LoggerFactory.getLogger(getClass());
로그 레벨(Log Level)
- debug와 trace 레벨의 로깅은 개발 단계에서만 사용(용량 문제), 개발 단계에서는 사용 x
- tace : debug보다 세분화된 정보
모든 레벨에 대한 로깅이 추적되므로 개발 단계에서 사용함 - debug : 디버깅하는데 유용한 세분화된 정보
개발 단계에서 사용하며, SQL 로깅을 할 수 있음 - info : 진행상황 같은 일반 정보
- warn : 오류는 아니지만 잠재거인 오류 원인이 될 수 있는 경고성 정보
당장 서비스 운영에는 영향이 없지만 주의해야 할 부분 - error : 요청을 처리하는 중 문제가 발생한 오류 정보
예상하지 못한 심각한 문제가 발생, 즉시 조치를 취해야 하는 수준의 레벨
728x90반응형'Spring > Spring MVC' 카테고리의 다른 글
Spring MVC - HTTP 헤더 조회 (0) 2022.01.28 Spring MVC - HTTP API의 요청 매핑 예시 (0) 2022.01.28 Spring MVC - Restcontroller (0) 2022.01.04 Spring MVC - MyBatis XML 설정 (0) 2022.01.04 Spring MVC - oracle db 연결 실패 문제 (Cannot create PoolableConnectionFactory (Listener refused the connection with the following error:) (0) 2022.01.04