Closed utterances-bot closed 1 year ago
안녕하세요! 혹시 마지막에 SQL 멀티라인 적용 완료하신 사진에서 kr.quidev.quiz.service.QuizService.findById(QuizService.kt:22) 처럼 SQL 호출한 메소드명과 위치 출력해주는 부분 설정 어떻게 하신건지 여쭐 수 있을까요? p6spy 설정파일 문서에는 없는 것 같아서요..!
@EunjiShin
안녕하세요.
제가 적은 PrettySqlFormat.kt
부분을 보면 멀티라인 설정을 직접 해 보면서 스택 트레이스도 찍어 보았는데요, 자바로 작성 한 부분에는 기본적인 부분만 작성 해서 stack trace 부분은 따로 구현 해두지를 않았어요.
불편하시더라두 코틀린 코드를 한번 봐 주세요. 자바와 거의 똑같기때문에 코드를 읽는데 큰 무리는 없으실거에요.
private fun stackTrace(): String {
return Throwable().stackTrace.filter { t ->
t.toString().startsWith("kr.quidev") && !t.toString().contains(ClassUtils.getUserClass(this).name)
}.toString()
}
바로 이 부분을 보시면, stackTrace를 읽어내며 하나의 String으로 만들어 주는데요, 워낙에 호출스택에 스프링의 온갖 필터나 인터셉터를 비롯한 수많은 콜들이 이어지기 떄문에 전부 넣으면 불필요한 정보가 굉장히 많습니다.
ClassUtils.getUserClass(this).name
로 스스로의 클래스명(p6spy포맷) 도 필터링 해 줍니다.자바에서는
new Throwable().getStackTrace()...
로 시작하셔서 트랙트레이스를 받아 오시면 될거에요
@Shane-Park
오 코틀린 코드에 설정이 있었군요! 자세한 설명 감사합니다. 참고해서 구현하겠습니다 :)
[Spring Boot JPA] P6Spy 활용해 쿼리 로그 확인하기
Intro 스프링부트와 JPA로 프로젝트를 진행하다 보면 실제 쿼리가 어떻게 나갈지 눈으로 확인을 하고 싶을 때가 참 많습니다. JPA가 참 편하긴 한데 개발자가 직접 쿼리를 작성하지 않았다 보니 실제로 어떤 쿼리가 나갈지는 눈으로 확인 하기 전까지는
https://shanepark.tistory.com/415