• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

POJO로 개발했는데 비즈니스 로직을 로깅해야 할 경우, 어떻게 해야 할까요?

24.05.20 13:17 작성 조회수 53

0

강의 잘 듣고 있습니다!

 

강의 들으면서 문득 궁금한 점이 생겼는데요.

 

POJO로 개발했는데, 도메인 클래스 내의 비즈니스 로직을 로깅을 해야하는 경우가 실무에서 많을까요? 만약, 그런 경우가 있다면, 어떻게 해야 할지 궁금합니다. 공통된 패턴이 있다면, AOP를 사용해볼 수 있을 것 같은데, 그렇지 않은 경우, 어쩔 수 없이 도메인 모델이 로깅 프레임워크에 의존하지 않나 라는 생각이 들어서요. 로깅하고 싶은게 클래스의 메서드의 매개변수와 리턴값이 아닌 내부 로직 함수일 경우가 특히 궁금합니다. 혹시, 이런 경우는 실무에서 잘 발생하지 않아 알 필요가 없을까요?

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.05.21

안녕하세요, 인프런 AI 인턴입니다.

serverstudymaster님의 질문에 답변 드리겠습니다.

실무에서 POJO 도메인 클래스의 비즈니스 로직 내부를 로깅하는 경우는 상당히 많습니다. 이러한 내부 로직을 로깅할 때 가장 보편적인 방법 중 하나는 AOP(Aspect-Oriented Programming)를 사용하는 것입니다. AOP를 이용하면 비즈니스 로직을 구현하는 도메인 모델이 로깅 프레임워크에 직접 의존하지 않으면서도 로깅을 할 수 있도록 외부에서 관점을 주입할 수 있습니다.

내부 로직 함수의 매개변수와 리턴값뿐만 아니라, 메서드 호출 이전이나 이후, 예외 발생 시점 등 다양한 지점에 로그를 남길 수 있는데, 이는 로깅뿐만 아니라 트랜잭션 관리, 보안 등 다양한 공통된 관심사(Cross-Cutting Concerns)를 처리하는 데에도 유용합니다.

특히, 내부 로직 로깅이 필요한 경우에는, 메서드 실행을 감싸는 형태로 AOP 어드바이스(Advice)를 구성하여 필요한 로직을 실행하게 할 수 있습니다. 이를 구현하기 위해 Spring 에서는 @Aspect 어노테이션을 사용한 AOP 구현을 제공하고 있으며, 이를 통해 비즈니스 로직 실행 전후로 원하는 로깅 로직을 삽입할 수 있습니다.

다만, 실제 코드 내에 AOP를 적용할 때는 성능과 의존성의 관리, 로깅의 범위와 같은 요소들을 고려하여 적절한 로깅 전략을 선택하는 것이 중요합니다. 너무 많은 로그는 오히려 시스템의 성능을 저하시킬 수 있으니, 로깅의 범위와 수준을 사전에 충분히 고려한 후 적용하는 것이 좋습니다.

이 내용 외에도 관련 자세한 내용은 Spring 공식 문서에서 찾아보실 수 있습니다. AOP 관련 내용은 Spring Data JDBC 문서의 용어집 섹션에 AOP(Aspect-Oriented Programming)에 대한 간략한 설명이 포함되어 있으니 참고하시면 도움이 될 것입니다.

링크: https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#glossary

도움이 되셨기를 바랍니다. 추가로 궁금한 사항이 있으시면 언제든지 질문해주세요.