1. 인터셉터의 설정
인터셉터는 DispatcherServlet이 컨트롤러를 호출하기 전,후에 요청과 응답을 가로채서 가공할 수 있도록 해줍니다.
예를 들어, 로그인 기능을 구현한다고 했을때, 로그인 여부에 따라 보여줄 수 있는 페이지와 없는 페이지를 분리할 때 사용할 수 있습니다.
2. 인터셉터의 생성
src/main/java/board 패키지 안에 패키지와 LoggingInterceptor.java 를 생성합니다.
인터셉터는 HandlerInterceptorAdapter 를 상속 받아 생성합니다.
클래스를 상속받으면 사용할 수 있는 3가지의 메서드가 존재합니다.
perHandle() - 컨트롤러 호출 전 사용합니다.
postHandle() - 컨트롤러 호출 후 사용합니다.
afterHandle() - 컨트롤러 호출 후 화면처리까지 끝났을때 사용합니다.
3. 인터셉터 적용범위 설정
인터셉터로 사용할 클래스를 생성하였다면, 적용범위를 지정해주어야 합니다.
core-servlet.xml 에서 인터셉터 선언 후 , mapping path 에는 적용 범위를 bean 에는 어떤 클래스가 인터셉터의 역활을 하는지 선언해 줍니다.
4. Welcome Page에서의 이동
웹 페이지를 생성할때 가장 처음 들어오는 페이지는 web.xml에서 선언한 index 로 약속되어있습니다.
이를 메인페이지로 이동 시키기 위해서 <jsp:forward page=" "> 라는 EL 태그로 컨트롤러를 호출 합니다.
5. Controller의 이동
index.jsp 에서 호출한 RequestMapping 을 토대로 컨트롤러를 호출 합니다. 내부의 로직을 실행 후, return 값에는 View 페이지를 출력할 예정입니다.
6. 인터셉터 확인
위와같이 설정이 완료되었다면, 프로젝트 실행시, index.jsp -> Interceptor -> Controller -> BoardList.jsp 순서로 이동하게 됩니다.
Console 로그를 확인하여 인터셉터가 정상적으로 작동하는지 확인 할 수 있습니다.
Log4j2 설정
Log4j2는 Apache에서 만든 오픈소스 라이브러리 중 로그를 담당하는 유틸리티 입니다.
로그는 다방면에서 쓰이며, 일반적으로 변수가 잘 전달되는지 혹은 문제가 없는지 확인할 때 사용 합니다.
System.out.println() 을 통해서 확인도 가능하지만, 운영 시, 메모리를 낭비하게 됩니다.
7. pom.xml Log4j2 설정하기
Log4j2 를 사용하기 위해서는 log4j-core , log4j-api , log4j-slf4j-impl 3가지가 필요합니다.
또한 인터페이스화 시키기 위하여 SLF4J 의 slf4j-api , slog4j-over-slf4j 를 추가합니다.
8. Log4j.xml -> Log4j2.xml 로 파일명 변경
9. Log4j2.xml 의 설정하기
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN">
<appenders>
<!-- 콘솔에 출력할 패턴을 지정합니다. -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<!-- 파일을 생성 할 수 있습니다. -->
<File name="LogToFile" fileName="logs/app.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
<!-- 파일을 생성하며 패턴을 줄 수있습니다. -->
<RollingFile name="LogToRollingFile" fileName="logs/app.log"
filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</RollingFile>
</appenders>
<loggers>
<!-- avoid duplicated logs with additivity=false -->
<Logger name="kr.co" level="debug" additivity="false">
<AppenderRef ref="Console" />
</Logger>
<Logger name="org.springframework.beans" level="debug"
additivity="false">
<AppenderRef ref="Console" />
</Logger>
<Logger name="org.springframework.context" level="debug"
additivity="false">
<AppenderRef ref="Console" />
</Logger>
<Logger name="org.springframework.web" level="debug"
additivity="false">
<AppenderRef ref="Console" />
</Logger>
<Logger name="jdbc.sqlonly" level="info" additivity="false">
<AppenderRef ref="Console" />
</Logger>
<Logger name="jdbc.resultsettable" level="info"
additivity="false">
<AppenderRef ref="Console" />
</Logger>
<root level="warn">
<appender-ref ref="Console" />
</root>
</loggers>
</configuration>
10. LoggingInterceptor의 수정
기존 System.out.println() 을통하여 사용하던 내용을 Log로 변경합니다.
11. Log4j2 작동 확인
위와 같이 로그 레벨 및 출력형태를 변경 후 프로젝트를 실행하게 되면 콘솔 창에 설정에 맞게 출력되는 것을 확인 할 수 있습니다.
Log4j 의 사용
Pom.xml 적용
Log4j는 스프링 프로젝트 생성 시, 기본적으로 등록되기때문에 따로 변경할 필요가 없습니다.

Log4j.xml 의 설정하기
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE log4j:configuration PUBLIC
"-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<!-- 콘솔 출력을 합니다. -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%-5p] %d{yyyy-MM-dd HH:mm:ss} %c %n%m%n" />
</layout>
</appender>
<!-- 파일로 로그를 출력 해 줍니다. -->
<appender name="logfile-daily"
class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="F:/logs/board.log" />
<param name="Append" value="true" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n" />
</layout>
</appender>
<!-- Application Loggers -->
<logger name="kr.co" additivity="false">
<level value="DEBUG" />
<appender-ref ref="console" />
</logger>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="DEBUG" />
</logger>
<logger name="org.springframework.beans">
<level value="DEBUG" />
</logger>
<logger name="org.springframework.context">
<level value="DEBUG" />
</logger>
<logger name="org.springframework.web">
<level value="DEBUG" />
</logger>
<!-- Query Loggers -->
<logger name="jdbc.sqlonly" additivity="false">
<level value="INFO" />
<appender-ref ref="console" />
</logger>
<logger name="jdbc.resultsettable" additivity="false">
<level value="INFO" />
<appender-ref ref="console" />
</logger>
<!-- Root Logger -->
<root>
<priority value="warn" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
Log4j 작동 확인
위와 같이 로그 레벨 및 출력형태를 변경 후 프로젝트를 실행하게 되면 콘솔 창에 설정에 맞게 출력되는 것을 확인 할 수 있습니다.

'Web Programming > Project' 카테고리의 다른 글
[게시판 만들기] 3-5. Spring 게시판 목록 만들기 (0) | 2020.04.21 |
---|---|
[게시판 만들기] 3-4. Spring 게시판을 위한 iBatis 와 Oracle연동 (0) | 2020.04.19 |
[게시판 만들기] 3-2. Spring 게시판을 위한 web.xml 설명 (0) | 2020.04.14 |
[게시판 만들기] 3-1. Spring 게시판을 위한 프로젝트 생성 (0) | 2020.04.13 |
[게시판 만들기] 2-4. JSP - Oracle 을 이용한 Model2 입니다. (0) | 2020.03.27 |