6강(스프링 Interceptor와 Logback 설정)
- BaseHandlerInterceptor 추가
이 클래스는 스프링에서 제공하는 HandlerInterceptorAdapter라는 클래스를 상속 받아서 구현을 한다.
요렇게 바뀌었다고 함.
이거 타입 같게 임포트 해주자. 이거 땜에 몇 시간이나 잡아먹음
- WebConfiguration 클래스에 WebMvcConfigurer 인터페이스 구현
만들어 둔 BaseHandlerInterceptor 클래스를 빈으로 등록하고 addInterceptor라는 메소드를 오버라이드 해서 레지스트리에 addInterceptor 메소드를 통해서 빈으로 등록한 메소드를 콜 해서 여기에 인터셉터를 추가할 것임.
- application.properties 설정
어플리케이션 프로퍼티에 로그인 콘피거에 우리가 사용할 로그백 위치를 지정해주면 된다.
- Logback-defalut.xml 만들기
뭐.. 이런 식으로 로그가 뜬다.
- DriverSpy 라이브러리 사용 및 SQL 로그보기
Pom.xml에 추가해주고
스프링 데이터소스 부분도 바꿔준다.
쓰고있던 마리아 db를 드라이버 스파이로 바꿔 줌
요렇게 해주면 콘솔창에 SQL 결과값이 뭔 표 형식으로 뜬다는데 나는 안뜬다. 뭐지왜지어째서안되는거지지금몇일째여기에막힌건지모르겠네
현재 리퀘스트가 뭔지 찍히고 컨트롤러를 타고 서비스 리포지토리에서 쿼리 로그가 찍히게 된다. 왜 전꺼는 안되는지 도저히 모르겠음..
이젠 이 로그도 없애 보자. 안됨
인터셉터에서 문제가 있었던 거 같다. HandlerInterceptor를 인터페이스로 구현하는 경우와 HandlerInterceptorAdapter 추상 클래스를 오버라이딩 함으로써 자신만의 인터셉터를 만들 수가 있다고 하는데..
그게 안됨.. HandlerInterceptorAdapter 추상 클래스 경우 HandlerInterceptor 인터페이스를 상속받아서 구현 됐다고 하는데 안됨안됨안됨. 인터셉터 문제도 아님.
딱 지금 여기까진 되는데 이거 이후가 안됨 왤까..
자, 차근차근 다시 해보자.
- DriverSpy 라이브러리 사용 및 SQL 로그 보기.
문제의 녀석이다. 일단 디팬던시 설정부터 해주자.
자 이렇게, 하라는 대로 했다. 이제 스프링 데이터소스 부분을 바꿔주자
이렇게!!!! 이렇게 바꿨다.. 그런데 결과는
이렇다. 강의대로라면
이런식으로 떠야 하는데 나는 왜 똑같이 했는데 다른 결과가 나오는 건가 도저히 모르겠다.
다른 방법을 찾아보자.
log4jdbc.log4j2.properties 생성
프로퍼티 생성을 해줬다 이제 될까?
안된다.. 도저히 안됨 질문으로 넘기고 다음 걸 해보자..
- 로그 최대한 줄이기
로그가 너무 많이 쌓이게 되면 오히려 디버깅하기가 어렵다. 그러니 로그를 최소한으로 남겨야 한다.
만든 패키지에서만 로그가 뜬다. 이제 다음 단계.. 스웨거에서 실행을 해보면
BaseHandlerInterceptor에서 preHandle메소드에서 현재 리퀘스트 URI가 뭔지 찍히고, 컨트롤러를 타고 서비스 리포지토리에서 쿼리 로그가 저렇게 찍히게 된다. 그리고 이 로그 조차도 제거하는 방법이 있다고 한다.
여기까진 어떻게 진행 되는지 로그가 잘 뜬다! 이건 또 되는데 뒤가 문제다..
시키는 대로 리포지토리 전체를 레벨 에러(어떠한 요청을 처리하는 중 문제가 발생한 상태를 나타냄. 프로그램 동작에 큰 문제가 발생했다는 것으로 즉시 문제를 조사해야 하는 것 DB를 사용할 수 없는 상태, 중요 에러가 나오는 상황)로 설정했다.
이렇게 강의와는 좀 다르지만 직접 찍은 로그만 뜬다
강의에서는 이렇게 뜬다. 이게 맞게 된 건지 잘 모르겠음.. 중간 과정이 사라졌으니 되긴 한거겠지..
- BoardController에 로그 남기기
요렇게 추가해주면
얘를 딱 눌렀을 때?
와 드디어 된다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 여태는 뭐가 문제였는지 모르겠으나.. 강의 내용을 다 삭제하고 다시 쓰고 하다보니 일단 이거는 해결이 됐다.