본문 바로가기

Lecture & Tip/Web[웹]

AspectJ 함수 안에서 호출된 위치알 수 있는 법!!

AspectJ를 이용해서 Method call의 시작과 끝에 로그를 남기는 방법을 찾던 중에

꽁수로 하나 만들어봤다.

사실 Thread Stack을 뒤지는 것이라 퍼포먼스에는 문제가 생기지만..

뭐..다른 방법을 못찾겠다..일단은 임시방편 코드.. ㅋㅋ

AspectJ를 완전 겉핧기 식으로 해본것이라 아직 syntax도 정확히 모르고 에효..

진작에 이런것을 알았으면 좋았을 것을 여태 Method마다 로그찍어주느라 노가다만 했네 ㅋㅋ

아무튼 나의 샘플코드는 아래와 같이 ...


public aspect AspectTester {
pointcut aspectA() : execution(* *.*());

before() : aspectA(){
System.out.println("Atlanta@!!");
StackTraceElement[] trace = Thread.currentThread().getStackTrace();
for (int i = 0; i < trace.length; i++) {
  if (trace[i].getClassName().equals("AspectTester")) {
   System.out.println("I'm called by ->"
     + trace[i + 1].getClassName() + "."
     + trace[i + 1].getMethodName());
  }

}
}

after() : aspectA(){
System.out.println("Atlanta@!! gogo");
}
}


더 좋은 방법을 아는 블로거 분들은 답변좀;;;;