ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] Logger 객체 사용법
    Web/Servlet && Spring 2019. 8. 29. 09:24

    logging

    - 기록을 남기는것

    - 앱 실행중 발생하는 이벤트나 다른사용자의 SW간의 메세지를 기록한 파일

     

    Log Level의 6단계

    FATAL - 아주 심각한

    ERROR - 요청 처리중 에러

    WARN - 향후 시스템 에러 원인이 될수 있는

    INFO - 상태변경과 같은 정보성 메세지

    DEBUG - 디버그 용도

    TRACE - 디버그 보다 상세한 정보

     

    이클립스에서는 SYSOUT으로 출력도 가능하지만 Logger클래스를 사용해 로그를 남기는게 좋다. 왜냐하면 Logger클래스는 에러의 단계를 지정할 수 있기 때문이다. 또 sysout이 많아지면 프로그램이 조금 느려질 수 있다.

     

    사용법

    MyLoggingAdvice.java 생성

    Logger클래스는 import org.slf4j.Logger;

    //Advice는 부가기능을 담당한다. 로깅을 담당할 클래스
    public class MyLoggingAdvice {
    	//import org.slf4j.Logger;
    	public static final Logger logger= LoggerFactory.getLogger(MyLoggingAdvice.class);
    	 
    	public void aroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
    		//추가로직
    		logger.info(joinPoint.getSignature().toString());
    		//메소드 실행
    		joinPoint.proceed();
    	}
    }
    

    pom.xml에 속성 추가

    <!-- AspectJ -->
    		<dependency>
    			<groupId>org.aspectj</groupId>
    			<artifactId>aspectjweaver</artifactId>
    			<version>${org.aspectj-version}</version>
    		</dependency>
    
    		<dependency>
    			<groupId>org.aspectj</groupId>
    			<artifactId>aspectjrt</artifactId>
    			<version>${org.aspectj-version}</version>
    		</dependency>
    		
    		<dependency>
    			<groupId>org.aspectj</groupId>
    			<artifactId>aspectjtools</artifactId>
    			<version>${org.aspectj-version}</version>
    		</dependency>
    		
    		<!-- 클래스 단위의 aop를 사용하기 위해선 필요하다. -->
    		<dependency>
    			<groupId>cglib</groupId>
    			<artifactId>cglib</artifactId>
    			<version>2.2</version>
    		</dependency>

    servlet-context.xml 속성 추가

    <!-- aop의 타겟을 인터페이스가 아닌 클래스로도 사용하겠다. 라는 옵션 -->
    <aop:config proxy-target-class="true"/>
    <beans:bean id="myLoggingAdvice" class="com.myway.tok.aop.MyLoggingAdvice"></beans:bean>
    <aop:config>
    	<aop:aspect ref="myLoggingAdvice">
    		<!-- pointcut :언제 실행할래? -->
            <!--해당 패키지의 DAO가 실행될때!-->
    		<aop:around method="aroundAdvice" pointcut="execution(* com.myway.tok.dao.*DAO.*(..))"/>
    	</aop:aspect>
    </aop:config>	

    controller.java에서 추가

    studentDAO.select();

    위와 같은 식으로 호출시 StudentDAO클래스의 select메소드가 실행될때

    Consol창에 INFO : com.myway.tok.aop.MyLoggingAdvice - void com.myway.tok.dao.StudentDAO.select() 라고 뜬다.

    반응형

    댓글

Designed by Tistory.