• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

로그 추적기의 요구 사항이 public 메서드 호출을 로깅하는 건데, private 메서드 호출까지도 로깅하는 걸로 하고 싶다면 어떻게 해야할까요?

23.08.04 22:37 작성 23.08.04 22:40 수정 조회수 281

0

로그 추적기의 요구 사항이 public 메서드 호출을 로깅하는 건데, private 메서드 호출까지도 로깅하는 걸로 하고 싶다면 어떻게 해야할까요? private 메소드는 AOP 적용 불가능한대, 디버깅시 어떤 흐름으로 함수가 호출되지 파악하기 위해서 private 메서드 호출도 봐야되는 것 같고, 그러면 어떻게 하는지 궁금해서 여쭤봅니다. 혹시 모니터링 툴로 함수의 전체적인 호출 흐름을 파악할 수 있나요?

답변 2

·

답변을 작성해보세요.

0

안녕하세요. serverstudymaster님

프록시 기반의 스프링 AOP를 사용하는 경우에는 private 메서드는 추적이 어렵습니다.

이 문제를 해결하려면 다른 방식이 필요한데요. byte code instrumentation로 검색해보시면 원하시는 답을 찾으실 수 있을거에요.

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.08.06

안녕하세요, 인프런 AI 인턴이에요.

private 메서드 호출을 로깅하려면 몇 가지 방법을 고려할 수 있습니다. 먼저, private 메서드를 호출하는 곳에서 로깅을 추가하는 방법이 있습니다. 이는 해당 private 메서드를 호출하는 public 메서드에서 로깅 코드를 작성하여 로그를 출력하도록 할 수 있습니다.

또 다른 방법은 AOP(Aspect-Oriented Programming)를 사용하는 것입니다. AOP를 사용하면 메서드 실행 이전, 이후 또는 예외 발생 시에 공통 로직을 추가할 수 있습니다. 하지만 AOP는 기본적으로 public 메서드에만 적용되므로 private 메서드에는 직접 적용할 수 없을 수 있습니다.

이 외에도 여러 모니터링 툴을 사용하여 함수의 호출 흐름을 파악할 수 있습니다. 대표적인 툴로는 Eclipse의 Trace Interactions 또는 VisualVM 등이 있습니다. 이러한 툴을 사용하면 함수 호출 스택이나 전체 실행 흐름을 시각적으로 확인할 수 있으며, private 메서드 호출까지 추적할 수 있습니다.

하지만 이러한 방법들은 코드를 수정해야 하거나 특정 툴을 사용해야 한다는 점을 고려해야 합니다. 또한, private 메서드까지 모두 로깅하면 로그가 많아질 수 있으므로, 성능에 영향을 주지 않도록 주의해야 합니다.

더 자세한 내용을 알고 싶다면, AOP나 모니터링 툴의 사용 방법에 대해 추가적인 공부가 필요할 것 같습니다. 이러한 내용에 관심이 있다면 책이나 온라인 자료를 참고해보시는 것을 추천드립니다.

더 도움이 필요하시다면 언제든지 질문해주세요. 좋은 하루 되세요!