, 나는 종종하고 싶은 :동적으로 디버그 로그 정보가있는 스택 프레임을 생성하는 방법에 더 나은 디버깅을위한
Exception
at com.example.blah.Something.method()
at com.example.blah.Xyz.otherMethod()
at com.example.hello.World.foo()
at com.example.debug.version_3_8_0.debug_info_something.Hah.method() // synthetic method
at com.example.x.A.wrappingMethod()
동적 제외하고, 단지 java.lang.reflect.Proxy
처럼 생성 될 수 위의 그림과 같이 디버그 스택 프레임 프록시에서 끝나는 전체 전체 메서드 이름을 완전히 제어하려고합니다. 호출 사이트에서
public void wrappingMethod() {
run("com.example.debug.version_3_8_0.debug_info_something.Hah.method()",() -> {
World.foo();
});
}
에서, wrappingMethod()
는 스택 추적에 끝나는 실제 방법, Hah.method()
가 동적으로 생성 된입니다 반면에 World.foo()
은 다시 실제 방법입니다.
예, 이미 깊은 스택 추적을 오염시키는 것을 알고 있습니다. 그것에 대해 걱정하지 마십시오. 내 이유가있다.
위와 비슷한 방식으로 (간단한) 방법이 있습니까?
저는이 영역에 상당히 익숙하지 않지만, 바이트 코드 수준에서이 작업을 수행 할 수 있음을 알고 있습니다. 그러나 언어에서 가능한지 확실하지 않습니다. –
@ Meguy26 : JDK 외부에 특별한 의존성없이 구현할 수 있다면 바이트 코드 수준의 솔루션을 사용할 수있다. 하지만, 나는 또한 Bytebuddy –