LogAspect.java

팡태(❁´◡`❁)·2022년 4월 4일
0

SPRING_20220328

목록 보기
6/24

java/com/example/aop/LogAspect.java
공통 작업을 구현하기 위한 용도

package com.example.aop;


import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class LogAspect {

    Logger logger = LoggerFactory.getLogger(LogAspect.class);

    // 패키지가 com.example.controller인 컴트롤러는 모두 수행
    @Around("execution(* com.example.controller.*Controller.*(..)) or execution(* com.example.mapper.*Mapper.*(..))")
    public Object printLog(ProceedingJoinPoint joinPoint) throws Throwable {
        // 현재시간 보관
        long start = System.currentTimeMillis();

        // 수행되는 클래스명
        String className = joinPoint.getSignature().getDeclaringTypeName();

        String type = "";
        if(className.contains("Controller") == true ) {
            type = "Controller => ";
        }
        else if(className.contains("Mapper") == true) {
            type = "Mapper => ";
        }
        else if(className.contains("Service") == true) {
            type = "Service => ";
        }

        // 끝나는 시간
        long end = System.currentTimeMillis();

        String methodName = joinPoint.getSignature().getName();
        logger.info(type + className + "->" + methodName);
        logger.info("execute time: " + (end-start));
        System.out.println("클래스명: "+ className + "메소드명: " + methodName);

        return joinPoint.proceed();
    }

0개의 댓글