반응형
스프링이나 스프링부트를 사용하면서 로그를 설정하여 사용하는 방법은 대표적으로
log4j와 logback이 있습니다.
log4j는 예전에 이슈가 있었어서 이번에 스프링부트에서 logback을 사용하여 로그설정을 해보았습니다.
logback은 Slf4j를 어노테이션으로 선언하고 lombok 라이브러리를 받아서 사용하면 여러번 로그 객체를 선언하지 않고 간편하게 사용할 수 있는 장점이 있습니다.
lombok 라이브러리 받기 (pom.xml)
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
log를 출력하고 log level을 설정할 xml 파일 만들기 (logback.xml)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="CONSOLE_LOG_PATTERN" value="%green(%d{yyyy-MM-dd HH:mm:ss.SSS}) %magenta([%thread]) %highlight([%-3level]) %cyan(%logger{5}) - %yellow(%msg %n)" />
<property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %magenta([%thread]) %highlight([%-3level]) %logger{5} - %msg %n" />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>/LOG/%d{yyyy-MM-dd}_%i.log</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<logger name="jdbc" level="OFF" additive="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc.sqlonly" level="DEBUG" additive="false" >
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc.sqltiming" level="OFF" additive="false" >
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.hibernate.SQL" level="DEBUG" additive="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.prj.keepproduct" level="DEBUG" additive="false" >
<appender-ref ref="CONSOLE"/>
</logger>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
(src/main/resources 하위에 xml 파일로 만들어준다.)
위 xml 파일명을 application.properties 파일에 설정합니다.
logging.config=classpath:logback.xml
자바에서 logback 로그 찍어보기
import lombok.extern.slf4j.Slf4j;
@Slf4j
@RestController
public class TestController {
@GetMapping("/test")
public String test(String param) throws Exception {
log.info("logback test : {}", param);
return "";
}
}
@Slf4j를 선언하여 사용하면 아래와 같이 로그객체를 생성해주지 않아도 됩니다.
private final Logger logger = LoggerFactory.getLogger(this.getClass());
만약 이렇게까지 설정하고 실행했을 때 로그 출력 시 오류가 발생한다면 아래와 같이 설정해주세요.
lombok 라이브러리 우클릭 -> Run As -> Java Application
아래 화면에서 Install / Update 로 설치 후 로그를 출력합니다.
반응형
댓글