Spring log 사용법 및 특징

오성민·2022년 12월 7일
0

spring

목록 보기
8/17
post-thumbnail

Spring에서 debug 및 오류를 알릴 때에 System.out.println으로 console에 표시를 하지 않는다고 한다.
보통은 sout이 아닌 log를 사용해서 debug 및 오류를 알린다고 한다. 그 이유와 사용법 및 특징 등을 알아보자.

log 란

log 란, 연속된 데이터의 기록이라고 한다.

가장 처음 java를 배우면 System.out.print를 사용하게 된다. 이것도 일종에 log를 남기는 것이지만 프로그램이 커지면 굉장히 불편하고 많은 단점 등이 존재한다.

sout 단점 및 logger 장점

- sout 단점

  • log를 console에 밖에 남기지를 못한다.
  • 오류 추적을 하기 위한 정보가 많이 부족하다.
  • 많은 자원을 요구한다.

- logger 장점

  • log를 console에 남기는 것은 물론이고, 영구적인 저장매체에 저장할 수 있다.
  • 설정을 해주면 영구적인 저장매체(외부 파일)에 너무 많은 내용이 담기지 않도록 일정 기간이 지나면 지워주거나, 분할을 할 수 있다.
  • 오류 추적을 하기 위한 정보가 충분하다.
  • 람다식을 지원해서 문자열을 다룰 때에 보다 적은 자원을 요구한다.
  • 사용법이 쉽다.
  • 설정을 해서 특정 level 이상의 log만을 표시해줄 수 있다.

- logger 단점

  • 사용법은 쉬우나, 잘 사용을 하기 위해서는 많은 공부가 필요하다.
  • 많은 정보를 파일에 남기려고 하다보면 파일 입출력이 필요하기 때문에 속도가 느려질 가능성이 있다.

log level

log에는 level이 존재하고, 각 level이 가지고 있는 의미가 다르므로 해당 level에 log를 남길 때에는 의미에 맞는 내용만을 출력해야한다.

TRACE > DEBUG > INFO > WARN > ERROR

왼쪽에서 오른쪽으로 심각한 상태를 나타낸다.

  • TRACE : 좀 더 상세한 상태를 나타냄
  • DEBUG : 말 그대로 디버그용으로 사용한다.
  • INFO : 정보성 log를 나타냄
  • WARN : 처리 가능하지만, 향후 에러의 원인이 될 수 있으므로 경고해주는 경고성 메시지
  • ERROR : 요청을 처리하는 중 error가 발생을 했다는 메시지

위와 같은 의미를 가지고 있다.

@Slf4j 사용법

spring framwork에서 logging을 사용하는 법을 알아보자.

logging library 사용법

나는 spring boot 환경에서 개발을 진행했다.
spring boot 에 기본적으로 포함된 라이브러리에 logging 라이브러리가 포함되어있어서 spring boot 환경이라면 따로 의존성을 추가해주지 않아도 된다.

하지만 spring 으로 진행한다면 maven, gradle 자기에게 맞는 환경에 따라 의존성을 추가해주면 된다.

@Slf4j 사용법

@Slf4j 란, 원래는 spring에서 log를 사용하려면 길게 한 줄에 코드를 추가해주어야 하는데, annotation을 추가해줘서 간단하게 log를 사용할 수 있게 해준다.

dependency

나는 gradle 환경에서 개발을 진행해서 gradle 기준으로 작성해주었다.

dependencies {
compileOnly 'org.projectlombok:lombok:1.18.24'
annotationProcessor 'org.projectlombok:lombok:1.18.24'
testCompileOnly 'org.projectlombok:lombok:1.18.24'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.24'
}

위와 같은 내용을 build.gradle에 추가해주면 lombok을 사용할 수 있다.

코드에 적용

log를 사용해주고 싶은 class에 annotation을 추가해주면 된다.

@Slf4j
public class ExampleClass {
	...
}

위와 같이 annotation을 추가해주면 해당 class에서는 log를 사용할 수 있다.

log로 내용을 표현해주고 싶다면

@Slf4j
public class ExampleClass{
	log.trace(...) // 좀 더 상세한 내용
    log.debug(...) // 디버그용
    log.info(...) // 정보성 내용
    log.warn(...) // 경고성 내용
    log.error(...) // 에러 표시
}

사용할 때는 위와 같이 사용한다.

log를 통해서 열심히 정보를 띄워주자!

profile
풀스택을 지향하는 개발자

0개의 댓글