스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging)가 함께 포함된다. 스프링 부트 로깅 라이브러리는 기본적으로 다음 로깅 라이브러리를 사용한다.
SLF 4J – http : // www . slf 4j . orgLogback – http://logback.qos.ch
로그 라이브러리는 Logback, Log4J, Log4J2 등 수많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 SLF4J 라이브러리이다.
즉, SLF4J는 인터페이스이며, 그 실장체로서 Logback과 같은 로그 라이브러를 선택하면 된다.실무에서는 스프링 부트가 기본적으로 제공하는 로그백의 대부분을 선언한다.
[ 로그 선언 ] private Logger log = LoggerFactory . getLogger ( getClass ( )) ; private static final Logger log = LoggerFactory . getLogger ( Xxx . class ) @ Slf 4j : 롬복 사용 가능
[로그 호출] log.info (“hello”)
시스템 콘솔에서 출력하기보다 로그를 취하도록 하자. 메모리 사용량이 바뀐다.
※ 올바른 로그 사용법 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 ) ; { } 는 name 을 대입한다 .
※ 올바르지 않은 로그의 사용법 log.debug ( ” String concat log = ” + name ) ;
application.properties llogging.레벨.hello.springmvc=info로 설정했을 때 trace, debug는 실행되지 않는다.
그러나, 자바에서는 a+b 계산 로직이 먼저 실행되기 때문에 메모리 사용량을 먹는다(연산 발생). 그러므로 올바른 로그의 사용법을 하자.
로그 레벨 설정 TRACE > DEBUG > INFO > WARN > ERROR 개발 서버는 debug 출력 운영 서버는 info 출력
#전 로그 레벨 설정(기본 info) logging.레벨.root=info#hello.springmvc 패키지와 그 하위 로그 레벨 설정 logging.level.hello.springmvc=debugᅳᆫ 일반적 ᅳ
로그 사용 시의 장점 1. 스레드 정보, 클래스 명 등의 부가정보를 볼 수 있고, 출력 형태를 조정할 수 있다.2. 로그 수준에 따라 개발서버에서는 모든 로그를 출력하고 운영서버에서는 출력하지 않는 등 로그를 상황에 따라 조절할 수 있다.3. 시스템 아웃콘솔에만 출력하지 않고 파일이나 네트워크 등 로그를 다른 위치에 남길 수 있다.특히 파일로 남길 때는 일일별, 특정 용량에 따라 로그를 분할하는 것도 가능하다.4. 성능도 일반 System.out보다 좋다. (내부 버퍼링, 멀티스레드 등) 그래서 실무에서는 반드시 로그를 사용해야 한다.