728x90
앞의 두 글에 심화된 내용이다.
설정은 그대로 하고,
package com.example.first.aop;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.slf4j.Logger;
import org.springframework.stereotype.Component;
@Aspect
@Component
@Slf4j
@RequiredArgsConstructor
public class LogAopComponent {
// HomeController의 모든 메서드에서 에러가 발생할 때, 에러 메시지가 로그로 찍힘
@AfterThrowing(pointcut = "execution(* com.example.first.controller.*(..))", throwing = "ex")
public void logError(Exception ex) {
log.error("에러 발생: " + ex.getMessage());
}
}
모든 컨트롤러에 에러가 발생하면 에러로그를 찍고 싶다면, 위와 같이 작성한다.
일일이 컨트롤러 하나하나, 메소드 하나하나에 에러 처리를 지정해주지 않아도 된다.
@AfterThrowing() 안에 원하는 경로 및 클래스를 지정해주고,
원하는 행위를 적어주면 된다.
나는 간단하게 에러가 발생 시, 다른 처리 없이 로그만 찍어주기로 했다.
로그인 시 , 비밀번호를 다르게 작성했다.
익셉션 처리를 따로 하지 않아 바로 에러가 터진다.
로깅 설정도 해주었기 때문에 로깅 파일에도 잘 저장이 된다.
이렇게 AOP를 사용하면 일일이 에러 처리를 해주지 않아도 한번에 원하는 경로만 작성만으로,
한번에 에러 처리를 할 수 있다!
'Back-end > java' 카테고리의 다른 글
스트림의 중간연산과 최종연산 목록 표 (0) | 2024.01.01 |
---|---|
@RequestBody 호출 시 일어나는 일을 간단히 알아보기 (feat. MessageConverter, ObjectMapper) (1) | 2023.12.06 |
로컬 디스크에 자바 로깅 기록하기 (spring.log) (0) | 2023.09.26 |
완전 간단하게 AOP로 log찍기 (0) | 2023.09.26 |
빌드 중 NoSuchFileException 에러 미해결 (0) | 2023.09.26 |