인프런 커뮤니티 질문&답변

dkswntjdgh님의 프로필 이미지
dkswntjdgh

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

궁금한 점이 생겨 질문 남겨봅니다.

작성

·

215

0

자바 서비스로직의 트랜잭션내에서 오류가 발생하면 롤백이 될건데, 그러한 오류사항을 DB에 어떻게 로그로 남길 수 있는지 알 수 있을까요???

답변 1

1

안녕하세요. dkswntjdgh님, 공식 서포터즈 OMG입니다.
.

 

AOP의 @AfterThrowing에 포인트컷 표현식을 service경로로 설정하고 에러 발생 직후의 동작을 지정할 수 있습니다. 아래 코드 예시를 참고해주세요 :)

@Slf4j
@Aspect
@Component
public class LoggingAspect {

    @AfterThrowing(pointcut = "execution(* com.example.service.*(..))", throwing = "exception")
    public void logAfterThrowing(JoinPoint joinPoint, Throwable exception) {
        log.error("Transaction Error Occurred: {}", exception.getMessage());

        // DB에 로그를 저장하는 로직 추가
        saveLogToDB(exception);
    }

    private void saveLogToDB(Throwable exception) {
        // DB에 로그를 저장하는 코드 작성
        // 예: logRepository.save(new Log(exception.getMessage()));
    }
}

 

 

.
감사합니다.

dkswntjdgh님의 프로필 이미지
dkswntjdgh

작성한 질문수

질문하기