AOP로 로그 남기기

2013. 4. 11. 18:49·프레임워크/[Java] spring
소스코드 GitHub 링크가기 => 고고고

목적은 Aop를 이용하여 메소드 실행시점에 로그를 남기는 것이다. 

AOP를 이용하는 방법에는 어노테이션을 이용하는 방법과 XML 설정을 이용하는 두가지 방법이 있다. 

각각의 방법을 모두 이용해 보도록 하자.


1. 어노테이션 이용하여 설정하기



	
	
	

	
	

	
	
		
		
	
	
	
		
	
	
	

	
	


어노테이션을 이용하기 위한 XML 설정은 위와 같다.

그리고 로거는 다음과 같이 설정

package sdk.spring.aop.logging;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect
public class LoggingAspect {

	@Before("execution(* sdk.spring.service..*(..))")
	public void logBefore(JoinPoint joinPoint) {

		System.out.println("*** logBefore() is running!");
		System.out.println("*** hijacked : " + joinPoint.getSignature().getName());
	}
}


이렇게 선언하면 어노테이션을 이용한 AOP-Logging 설정을 끝낸것이다. 
어노테이션의 설정에 따라 sdk.spring.service 밑에 있는 메소드가 실행되면, 실행하기전에 로그가 설정 될 것이다. 

2. XML 설정 파일을 이용한 설정

XML을 이용한 설정은 기존에 설정한 XML 에 aop:config 를 추가해주면 된다. 





	
	

	
	

	
	
		
		
	
	
	
		
	
	
	

	
	

	
	
		

			
			
			
		
	


위와 같이 설정하고 1에서 사용한 java 파일에서 어노테이션만 제거하면 동일하게 동작한다. 

주의할 점은 aop 설정을 서블릿이 context 파일에 해주어야 한다는 것이다 

설정의 위치에 따라 동작하지 않을 수도 있으니 이점에 주의 하도록 하자. 

이렇게 성공하고도 실제 프로젝트에 적용했는데 동작하지 않아서 원인을 찾던중 설정의 위치를 바꾸니까 동작을 했다. 

이 파일을 적용하고도 동작하지 않으면 설정의 위치에 유의해서 확인해보도록 하자. 

반응형

'프레임워크 > [Java] spring' 카테고리의 다른 글

ContentNegotiatingViewResolver를 이용한 XML, JSON 뷰 만들기  (0) 2013.04.16
'프레임워크/[Java] spring' 카테고리의 다른 글
  • ContentNegotiatingViewResolver를 이용한 XML, JSON 뷰 만들기
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    AWS
    하이브
    nodejs
    mysql
    Tez
    SPARK
    airflow
    다이나믹
    Linux
    S3
    HDFS
    build
    Python
    hbase
    emr
    백준
    HIVE
    오류
    알고리즘
    error
    yarn
    Hadoop
    oozie
    java
    파이썬
    k8s
    하둡
    정올
    bash
    ubuntu
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
AOP로 로그 남기기
상단으로

티스토리툴바