안녕하세요, 오늘은 어노테이션(Annotation) @Slf4j lombok log 설정과 사용법에 대해 알아보겠습니다.
로그(log)란?
모든 행위와 이벤트 정보를 시간의 경과에 따라 기록한 데이터이고 시스템 상에서 로그를 생성하는 과정을 로깅이라고 합니다.
우선 log를 찍어야 하는 제일 큰 이유는 에러 발생시 원인 분석입니다.
그리고 성능 분석 및 사용자들에 대한 분석 및 통계를 위함도 있습니다.
그럼 이제 gradle(그래들) 프로젝트의 lombok(롬복)에서 지원해주는 @Slf4j Annotation(어노테이션) 설정과 사용법에 대해 알아보겠습니다.
1. build.gradle 파일에 dependencies 안에 아래 코드를 작성합니다.
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
// log
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
// mybatis
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
// lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
// postgresql
runtimeOnly 'org.postgresql:postgresql'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.3'
}
2. src/main/resources 아래에 logback.xml 파일을 생성 후 아래 코드를 작성 합니다.
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyyMMdd HH:mm:ss.SSS} [%thread] %-3level %logger{5} - %msg %n</pattern>
</encoder>
</appender>
<logger name="jdbc" level="OFF"/>
<logger name="jdbc.sqlonly" level="OFF"/>
<logger name="jdbc.sqltiming" level="DEBUG"/>
<logger name="jdbc.audit" level="OFF"/>
<logger name="jdbc.resultset" level="OFF"/>
<logger name="jdbc.resultsettable" level="DEBUG"/>
<logger name="jdbc.connection" level="OFF"/>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
</configuration>
위와 같이 코드를 작성후 lombok(롬복)을 설치를 해 줍니다.
lombok(롬복) 설치는 아래 URL을 참고 하시면 됩니다.
https://nazzang19.tistory.com/85
이제 lombok(롬복)에서 지원해주는 @Slf4j log 테스트를 위한 코드 작성입니다.
테스트를 위한 JAVA Class에 @Slf4j Annotation(어노테이션) 작성하고
import lombok.extern.slf4j.Slf4j; 를 import 해줍니다.
아래와 같이 테스트 할 log를 작성합니다.
그리고 서버를 기동후 테스트를 해보면 콘솔 창에 log가 찍히는 것을 확인 할 수 있습니다.
log level(로그 레벨)
log level | 설명 |
trace | debug보다 세분화된 정보 |
debug | 디버깅하는데 유용한 유용한 세분화된 정보 |
info | 진행상황 같은 일반 정보 |
warn | 오류는 아니지만 잠재적은 오류 원인이 될 수 있는 경고성 정보 |
error | 요청을 처리하는 중 문제가 발생한 오류 정보 |
trace > debug > info > warn > error
로그 레벨이 클수록 하위 로그 레벨까지 로깅합니다.
ex) log 레벨이 info면 info, warn, error 까지 로깅하고
log 레벨이 debug 면 debug , info, warn, error 까지 로깅합니다.
직접 log level(로그 레벨)을 수정하고 확인 해 보겠습니다.
로그는 아래에 예시 처럼 info와 debug를 다 찍어놓았습니다.
@RequestMapping(value = "/testDatabaseConnection", method = RequestMethod.GET)
public ResponseEntity<?> selectMember(HttpServletRequest request) {
log.info("info selectMember testDatabaseConnection");
log.debug("debug selectMember testDatabaseConnection");
log.info("info selectMember testDatabaseConnection : {}", request);
log.debug("debug selectMember testDatabaseConnection : {}", request);
List<TestVO> result = testService.selectMember();
log.info("info testDatabaseConnection result : {}", result);
log.debug("debug testDatabaseConnection result : {}", result);
return ResponseEntity.ok(result);
}
logback.xml 파일에 <root level="INFO"> 로 설정 후 테스트하면 아래와 같이 INFO로그만 찍히는 것을 확인 할 수 있습니다.
logback.xml 파일에 <root level="DEBUG"> 로 설정 후 테스트하면 아래와 같이 DEBUG로그와 INFO로그가 모두 찍히는 것을 확인 할 수 있습니다.
이상 어노테이션(Annotation) @Slf4j lombok log 설정과 사용법에 대해 알아보았습니다.
어노테이션(Annotation)
어노테이션(Annotation)
'개발 > JAVA' 카테고리의 다른 글
[JAVA] 스프링 부트(Spring Boot) 그래들(Gradle) 프로젝트(Project) 인터셉터(Interceptor)적용하기 (2) | 2024.04.25 |
---|---|
[JAVA] Spring Boot Gradle 프로젝트 postgreSQL 설정 및 MyBatis 설정 (6) | 2024.04.02 |
[JAVA] SpringToolSuite4 Gradle 프로젝트에 lombok 추가 하기 (19) | 2024.03.25 |
[JAVA] Window에 Gradle 설치 및 환경 변수 설정하는 방법 (29) | 2024.03.22 |
[JAVA] WINDOW에 JAVA 설치 JDK 17 시스템 환경 변수 설정 (30) | 2024.03.19 |