MVC 프레임워크 10

Feb 21, 2023

3 mins read

로깅 간단히 알아보기

  • system.out.println()이 아닌 스프링부트 로깅 라이브러리를 활용 해 보자.
  • SLF4J - http://www.slf4j.org
  • Logback - http://logback.qos.ch
  • 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데,
    그것을 통합해서 인터페이스로 제공하는 것이 바로 SLF4J 라이브러리다.
  • SLF4J는 인터페이스, 구현체로 Logback 사용.
  • (인프런 수업 듣는중)

SLF4J 라이브러리 사용

  • hello.springmvc.basic 패키지를 만들고 LogTestController클래스를 만들어 로그를 찍어보자.
package hello.springmvc.basic;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@RestController //Controller는 String을 반환하면 뷰이름이지만 RestController를 지정하면 그냥 HTTP 메시지 바디에 String으로 바로 입력한다
public class LogTestController {
	
	//@Slf4j를 선언하면 아래 Logger선언한 것과 같다.
	//private final Logger log = LoggerFactory.getLogger(getClass()); //내 클래스 지정
	
	@RequestMapping("/log-test")
	public String logTest(){
		
		String name = "Spring";
		
		System.out.println("name = " + name);
		
		//로그레벨 지정 application.properties에서 지정 가능
		log.trace("trace log={}", name);
		//log.trace("trace log={}"+name); //String +로 쓰는거보다 파라메터만 넘기는게 더 자원을 아낄수 있다.
		log.debug("debug log={}", name);
		log.info("info log={}", name);
		log.warn("warn log={}", name);
		log.error("error log={}", name);
		
		
		return "ok";
	}
	
}
  • 로그가 출력되는 포멧 - 시간, 로그 레벨, 프로세스 ID, 쓰레드 명, 클래스명, 로그 메시지
  • 로그 레벨 설정을 변경해서 출력 결과를 보자.
    • LEVEL : TRACE > DEBUG > INFO > WARN > ERROR
  • 개발 서버는 debug 출력. 운영 서버는 info 출력.
  • 위 소스 돌려보면 아래와 같이 로그가 레벨 별로 찍힌다.

spring_log_level

  • application.properties에 로그 설정을 프로젝트나 패키지 단위로 해둘 수 있다.
#전체 로그 레벨 설정(기본 info)
logging.level.root=info

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

로그 더 공부하기

https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.logging