개발/JAVA

[JAVA] gradle 프로젝트 lombok @Slf4j log 설정 및 사용법

TaeDy.I.T. 2024. 4. 5. 10:02
반응형

안녕하세요, 오늘은 어노테이션(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

 

@RequiredArgsConstructor 어노테이션(Annotation) 사용 시 private final 변수 initialize final field 에러(error) 롬

안녕하세요 오늘은 @RequiredArgsConstructor 어노테이션(Annotation) 사용 시 private final 변수 initialize final field 에러해결 하는 방법에 대해 알아보겠습니다. 1. 우선 프로젝트의 롬복(lombok) 경로를 확인해

nazzang19.tistory.com

 

이제 lombok(롬복)에서 지원해주는 @Slf4j log 테스트를 위한 코드 작성입니다.

 

테스트를 위한 JAVA Class에 @Slf4j Annotation(어노테이션) 작성하고 

import lombok.extern.slf4j.Slf4j; 를 import 해줍니다.

 

어노테이션(Annotation) @Slf4j
어노테이션(Annotation) @Slf4j

 

아래와 같이 테스트 할 log를 작성합니다.

log 작성
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로그만 찍히는 것을 확인 할 수 있습니다.

log info
log info

 

 

logback.xml 파일에 <root level="DEBUG"> 로 설정 후 테스트하면 아래와 같이 DEBUG로그와 INFO로그가 모두 찍히는 것을 확인 할 수 있습니다.

log debug
log debug
log debug2
log debug2

 

 

 

이상 어노테이션(Annotation)  @Slf4j lombok log 설정과 사용법에 대해 알아보았습니다.

어노테이션(Annotation)

어노테이션(Annotation)

반응형