티스토리 뷰

Aspectj로 공통로깅 만들기


개발을 하다보면 꼭 필요한것 중에 한가지가 디버깅에 필요한 로깅을 하는것이다. 
그리고 자바, 스프링의 좋은것중 한가지가 다양한 라이브러리를 지원하고 개발자는 의존성만 주입하면 손쉽게 해당 기능을 가져다가 쓸수 있다는 것이 개인적으로 느꼈던 장점중 한가지였다. 

spring boot aspectjweaver library 의존성 추가 Java Config 방식
dependencies {
	
	// spring
	compile("org.springframework.boot:spring-boot-starter-web")
	compile("org.springframework:spring-context-support")
	compile("org.aspectj:aspectjweaver:1.8.8")
	
	testCompile("org.springframework.boot:spring-boot-starter-test") 
}
Xml 설정방식

로깅 구현
@Aspect
@Component
public class LoggingAspect {

	private Logger logger = LoggerFactory.getLogger(getClass());
	
	
	@Around("execution(* com.domain..*Service.*(..)) or execution(* com.domain..*Dao.*(..))")
	public Object aroundExecuteLogging(ProceedingJoinPoint pjp) throws Throwable {
		
		String targetClassName = pjp.getTarget().getClass().getName();
		String targetMethodName = pjp.getSignature().getName();
		Object[] args = pjp.getArgs();
		if (logger.isDebugEnabled()) {
			logger.debug(" [ Start ] " + targetClassName + "." + targetMethodName);
			for (int i = 0; i < args.length; i++) {
				logger.debug("arguments[" + i + "] : " + args[i].toString());
			}
		}
		
		Object returnValue = pjp.proceed();
		
		if (logger.isDebugEnabled()) {
			logger.debug(" [ End ] " + targetClassName + "." + targetMethodName);
		}
		
		return returnValue;
    }
	
}


'프로그램 > JAVA' 카테고리의 다른 글

Mybatis not support overload  (1) 2017.01.13
스프링프레임웍 호스트설정시 주의사항  (0) 2017.01.11
톰캣 common-dbcp  (0) 2016.10.18
Troubleshooting 스레드사용법  (0) 2016.10.12
자바 메모리 튜닝  (0) 2016.10.12
댓글