로그 추적기의 요구 사항이 public 메서드 호출을 로깅하는 건데, private 메서드 호출까지도 로깅하는 걸로 하고 싶다면 어떻게 해야할까요?
434
작성한 질문수 14
로그 추적기의 요구 사항이 public 메서드 호출을 로깅하는 건데, private 메서드 호출까지도 로깅하는 걸로 하고 싶다면 어떻게 해야할까요? private 메소드는 AOP 적용 불가능한대, 디버깅시 어떤 흐름으로 함수가 호출되지 파악하기 위해서 private 메서드 호출도 봐야되는 것 같고, 그러면 어떻게 하는지 궁금해서 여쭤봅니다. 혹시 모니터링 툴로 함수의 전체적인 호출 흐름을 파악할 수 있나요?
답변 2
0
안녕하세요. serverstudymaster님
프록시 기반의 스프링 AOP를 사용하는 경우에는 private 메서드는 추적이 어렵습니다.
이 문제를 해결하려면 다른 방식이 필요한데요. byte code instrumentation로 검색해보시면 원하시는 답을 찾으실 수 있을거에요.
감사합니다.
0
안녕하세요, 인프런 AI 인턴이에요.
private 메서드 호출을 로깅하려면 몇 가지 방법을 고려할 수 있습니다. 먼저, private 메서드를 호출하는 곳에서 로깅을 추가하는 방법이 있습니다. 이는 해당 private 메서드를 호출하는 public 메서드에서 로깅 코드를 작성하여 로그를 출력하도록 할 수 있습니다.
또 다른 방법은 AOP(Aspect-Oriented Programming)를 사용하는 것입니다. AOP를 사용하면 메서드 실행 이전, 이후 또는 예외 발생 시에 공통 로직을 추가할 수 있습니다. 하지만 AOP는 기본적으로 public 메서드에만 적용되므로 private 메서드에는 직접 적용할 수 없을 수 있습니다.
이 외에도 여러 모니터링 툴을 사용하여 함수의 호출 흐름을 파악할 수 있습니다. 대표적인 툴로는 Eclipse의 Trace Interactions 또는 VisualVM 등이 있습니다. 이러한 툴을 사용하면 함수 호출 스택이나 전체 실행 흐름을 시각적으로 확인할 수 있으며, private 메서드 호출까지 추적할 수 있습니다.
하지만 이러한 방법들은 코드를 수정해야 하거나 특정 툴을 사용해야 한다는 점을 고려해야 합니다. 또한, private 메서드까지 모두 로깅하면 로그가 많아질 수 있으므로, 성능에 영향을 주지 않도록 주의해야 합니다.
더 자세한 내용을 알고 싶다면, AOP나 모니터링 툴의 사용 방법에 대해 추가적인 공부가 필요할 것 같습니다. 이러한 내용에 관심이 있다면 책이나 온라인 자료를 참고해보시는 것을 추천드립니다.
더 도움이 필요하시다면 언제든지 질문해주세요. 좋은 하루 되세요!
어드바이스 순서 디폴트 기준이 궁금합니다.
0
55
1
AspectV1 예제를 @Configuration 수동 등록으로도 가능한가요?
0
81
2
구체 클래스를 상속받아 확장한 형태도 클래스패턴/데코레이터 패턴이라고 칭하나요?
0
57
1
TraceTemplate 을 미리 빈으로 등록해서 사용할때 이렇게 설정하는게 맞는건가요?
0
54
1
Decorator 에서 추상메서드로 뺄때 질문 있습니다.
0
56
1
대상 클래스에 기본 생성자가 없을 때
0
76
1
스프링 부트 버전 4.0 aop 의존성 명칭 변경
1
362
2
final 키워드 사용 관련 질문
0
78
1
안녕하세요
0
66
1
ThradLocal 실무 사례
0
98
2
실무에서의 동시성 문제
0
64
1
로그 등 부가 기능에 대한 테스트코드
0
50
1
ProceedingJoinPoint와 MethodInvocation에 대하여
0
67
1
실무 멀티스레딩에 대한 궁금증
0
70
1
안녕하세요 질문있습니다
0
45
1
AspectV3 aop 실행 순서 문의 드립니다
0
38
1
MDC vs AOP 중에 고민중입니다.
0
77
1
순환참조
0
161
2
this를 단독으로 사용할때랑 파라미터 바인딩 할때 차이
0
78
1
빈 후처리에 등록 질문 있습니다.
0
77
1
AppConfig 설정하는 설명중에 이해가 안되는게 있습니다.
0
90
1
ThreadLocal을 지역변수로 선언하면 remove가 필요할까요?
0
118
2
@Aspect 어노테이션으로 생성된 Advisor의 Bean 저장 여부
0
69
1
ThreadLocal 사용시 부작용이 있을수 있을까요? (ThreadLocal.remove()를 잘한다고 해도..)
0
73
2





