[스프링 게시판 - 3 로그 설정] 흔한개발자

anonymous·2021년 6월 18일
0

게시판

목록 보기
3/3

Log4j 설정

Log4j는 자바기반의 로깅 유틸리티로, Apache에서 만든 오픈소스 라이브러리다.

요소
Logger : 출력할 메시지를 Appender에 전달한다.
Appender : 전달된 로그를 어디에 출력할 지 결정한다. (콘솔 출력, 파일 기록, DB 저장 등)
Layout : 로그를 어떤 형식으로 출력할 지 결정한다.

로그레벨
FATAL 아주 심각한 에러가 발생한 상태를 나타낸다.
ERROR 어떠한 요청을 처리하는 중 문제가 발생한 상태를 나타낸다.
WARN 프로그램의 실행에는 문제가 없지만, 향후 시스템 에러의 원인이 될수 있는 경고성 메시 지를 나타낸다.
INFO 어떠한 상태변경과 같은 정보성 메시지를 나타낸다.
DEBUG 개발시 디버그 용도로 사용하는 메시지를 나타낸다.
TRACE 디버그 레벨이 너무 광범위한것을 해결하기 위해서 좀 더 상세한 이벤트를 나타낸다.

log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration
	xmlns:log4j="http://jakarta.apache.org/log4j/">
	<!-- Appenders -->
	<appender name="console" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d %5p [%c] %m%n" />
		</layout>
	</appender>
	<appender name="console-infolog" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d %5p %m%n" />
		</layout>
	</appender>
	<!-- Application Loggers -->
	<logger name="first" additivity="false">
		<level value="debug" />
		<appender-ref ref="console"/>
	</logger>
	<!-- Query Loggers -->
	<logger name="jdbc.sqlonly" additivity="false">
		<level value="INFO"/>
		<appender-ref ref="console-infolog"/>
	</logger>
	<logger name="jdbc.resultsettable" additivity="false">
		<level value="INFO"/>
		<appender-ref ref="console"/>
	</logger>
	<!-- Root Logger -->
	<root>
		<priority value="off"/>
		<appender-ref ref="console" />
	</root>
</log4j:configuration>

인터셉터 설정

LoggerInterceptor.java

public class LoggerInterceptor extends HandlerInterceptorAdapter {
  protected Log log = LogFactory.getLog(LoggerInterceptor.class);
  @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    if (log.isDebugEnabled()) {
      log.debug("====================================== START ======================================");
      log.debug(" Request URI \t: " + request.getRequestURI());
    }
    return super.preHandle(request, response, handler);
  }
  @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    if (log.isDebugEnabled()) {
      log.debug("====================================== END ======================================\n");
    }
  }
}

action-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
	<context:component-scan base-package="first"></context:component-scan>
	<mvc:interceptors>
		<mvc:interceptor>
			<mvc:mapping path="/**"/>
			<bean id="loggerInterceptor" class="first.common.logger.LoggerInterceptor"></bean>
		</mvc:interceptor>
	</mvc:interceptors>
	<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
	<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="0" />
	<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
	<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="1" p:viewClass="org.springframework.web.servlet.view.JstlView" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"></bean>
</beans>

출처

https://addio3305.tistory.com/43?category=772645 [흔한 개발자의 개발 노트]

profile
기술블로거입니다

0개의 댓글