Spring에서 debug 및 오류를 알릴 때에 System.out.println으로 console에 표시를 하지 않는다고 한다.
보통은 sout이 아닌 log를 사용해서 debug 및 오류를 알린다고 한다. 그 이유와 사용법 및 특징 등을 알아보자.
log 란, 연속된 데이터의 기록이라고 한다.
가장 처음 java를 배우면 System.out.print를 사용하게 된다. 이것도 일종에 log를 남기는 것이지만 프로그램이 커지면 굉장히 불편하고 많은 단점 등이 존재한다.
log에는 level이 존재하고, 각 level이 가지고 있는 의미가 다르므로 해당 level에 log를 남길 때에는 의미에 맞는 내용만을 출력해야한다.
TRACE > DEBUG > INFO > WARN > ERROR
왼쪽에서 오른쪽으로 심각한 상태를 나타낸다.
위와 같은 의미를 가지고 있다.
spring framwork에서 logging을 사용하는 법을 알아보자.
나는 spring boot 환경에서 개발을 진행했다.
spring boot 에 기본적으로 포함된 라이브러리에 logging 라이브러리가 포함되어있어서 spring boot 환경이라면 따로 의존성을 추가해주지 않아도 된다.
하지만 spring 으로 진행한다면 maven, gradle 자기에게 맞는 환경에 따라 의존성을 추가해주면 된다.
@Slf4j 란, 원래는 spring에서 log를 사용하려면 길게 한 줄에 코드를 추가해주어야 하는데, annotation을 추가해줘서 간단하게 log를 사용할 수 있게 해준다.
나는 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를 통해서 열심히 정보를 띄워주자!