Java/Spring framwork
slf4j를 이용한 로그남기기
휘휘o
2020. 8. 17. 11:50
출력 코드를 SLF4J와 logback라이브러리를 이용해 출력할 것이다.
Spring 환경변수들은 기본적으로 갖춰져 있다고 가정
1. pom.xml 파일을 수정해준다.
<!-- 로깅 관련 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency> <!--commons-logging을 사용하지 않기 위해 추가해준다.-->
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion> <!--이 부분은 사용하지 않을 것, 제거 -->
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
2. resource폴더에 logback.xml 파일을 작성합니다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/tmp/access.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/tmp/access-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
</encoder>
</appender>
<logger name="org.springframework" level="info"/>
<logger name="kr.or.connect" level="debug"/>
<root level="debug">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
3. LogInterceptor.java를 아래와 같이 수정합니다.
package kr.or.connect.guestbook.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class LogInterceptor extends HandlerInterceptorAdapter{
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// System.out.println(handler.toString() + " 가 종료되었습니다. " + modelAndView.getViewName() + "을 view로 사용합니다.");
logger.debug("{} 가종료되었습니다. {} 를 view로 사용합니다.", handler.toString(), modelAndView.getViewName());
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// System.out.println(handler.toString() + " 를 호출했습니다.");
logger.debug("{} 를 호출했습니다.", handler.toString());
return true;
}
}
참고자료 : https://www.edwith.org/boostcourse-web/lecture/16815/
[LECTURE] 3) slf4j를 이용한 로그남기기 : edwith
들어가기 전에 이번 시간엔 앞에서 배웠던 인터셉터의 출력 코드를 SLF4J와 logback라이브러리를 이용해 출력하도록 수정하도록 하겠습니다. 학습 목표 slf4j와 logback... - 부스트코스
www.edwith.org