2016-11-01 2 views
0

저는 Java와 Javassist를 처음 사용합니다. 특정 메소드에서 원시 변수 중 하나에서 각 읽기 액세스 전에 로거를 추가하고 싶습니다. 몇 가지 조사 후이 코드를 내놓았다 :Javassist insturmenter

try { 
method.instrument(
     new ExprEditor() { 
      public void edit(FieldAccess fa) throws CannotCompileException { 
       CtField field = null; 
       CtClass fieldType = null; 
       try { 
        field = fa.getField(); 
        fieldType = field.getType(); 
       } catch (NotFoundException e) { 
        e.printStackTrace(); 
       } 
       if (fa.isReader() && field != null && fieldType.isPrimitive()){ 
        System.out.println("Primitive found: " + field.getName()); 

        //ToDo: call method before variable access 
        fa.replace("{ $_ = $proceed($$); }"); 
       } 
      } 
     } 
    ); 
} catch (CannotCompileException e) { 
    e.printStackTrace(); 
} 

액세스 할 변수 전에 (로거) 메소드를 호출 할 수있는 방법이 있나요, 아니면 다른 방법으로이 문제를 해결해야합니까? Javassist를 사용하여 이것을 달성하는 가장 좋은 방법은 무엇입니까?

희망 누군가가 나를 도울 수 :

답변

0

당신은 로거 메소드를 호출하는 일반 로거 객체를 사용할 수 있습니다. 그러나 매니페스트 파일에 jar 클래스 경로를 지정해야합니다.

관련 문제