Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BSVR-55] P6spy를 이용한 쿼리 로그 설정 #12

Merged
merged 7 commits into from
Jul 3, 2024
Merged

Conversation

EunjiShin
Copy link
Collaborator

@EunjiShin EunjiShin commented Jul 3, 2024

📌 개요 (필수)

  • 내가 작성한 코드가 실제 쿼리로 어떻게 변환되는지 확인하기 위해 쿼리 로그를 추가해요.
  • jpa.properties.hibernate.show_sql은 가독성이 좋지 않아서, p6spy 라이브러리를 사용했어요.

🔨 작업 사항 (필수)

  • p6spy 의존성 추가
  • 쿼리 로그 포맷터 & 설정 파일 추가

🌱 연관 내용 (선택)

p6spy는 datasource에 프록시로 붙어서 동작해요. spring-boot-starter를 이용해 보다 편리하게 사용할 수 있어요.


💻 실행 화면

  • jpa.properties.hibernate.show_sql 적용 :: 가독성 안좋고 매개변수도 안보임
스크린샷 2024-07-04 오전 12 34 09
  • jpa.properties.hibernate.format_sql 추가 적용 :: 가독성은 좋아졌으나 여전히 매개변수 안보임
스크린샷 2024-07-04 오전 12 33 48
  • show_sql, format_sql 다 지우고 p6spy만 적용 :: 가독성도 좋고 stacktrace도 보이고 실행시간도 보이고 매개변수도 보임 ^^👍
스크린샷 2024-07-04 오전 12 47 05

@@ -23,3 +23,5 @@ version.org.springframework.boot..spring-boot-starter-data-jpa=3.0.1

version.org.springdoc..springdoc-openapi-starter-webmvc-ui=2.5.0

version.com.github.gavlyukovskiy..p6spy-spring-boot-starter=1.9.0
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1.9.0버전부터 spring boot3 지원! 업그레이드는 되는데, 다운그레이드는 하지 않도록 주의 필요~~

Comment on lines +21 to +24
decorator:
datasource:
p6spy:
enable-logging: true
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

enable-logging을 true로 두면 p6spy가 동작해.
자원을 많이 잡아먹는 라이브러리라서, 운영환경에 배포할 땐 false로 바꾸고 배포해야해.
prod profile를 새로 만들때 주의하면 될 듯~

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인!

Comment on lines +27 to +29
return String.format(
"[%s] | took %d ms | connectionId %d | %s | %s",
category, elapsed, connectionId, filterStack(), formatSql(category, sql));
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

차례대로

  • category : 쿼리 카테고리. 일반 쿼리(DML, DDL), commit, rollback, hint 등등
  • elapsed : 쿼리 실행 시간
  • connectionId : DB 커넥션 ID
  • filterStack() : 해당 쿼리가 실행되기까지의 스택 트레이스
  • formatSql() : 실행된 쿼리 정보

Copy link

github-actions bot commented Jul 3, 2024

Test Results

0 tests   0 ✅  0s ⏱️
0 suites  0 💤
0 files    0 ❌

Results for commit e69c6df.

Comment on lines +62 to +67
for (StackTraceElement element : stackTraces) {
String trace = element.toString();
if (trace.startsWith(ROOT_PACKAGE) && !trace.contains(P6SPY_PACKAGE)) {
sb.append("\n\t\t").append(order++).append(".").append(trace);
}
}
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

스택 트레이스를 전부 사용하면 불필요한 정보도 많이 남고 자원 소모도 심하니까, 디버깅에 필요한 정보만 필터링하는 코드야.
org.depromeet.spot 패키지 하위의 element만 남기되, P6spy 설정과 관련된 element는 무시하도록 했어~

스크린샷 2024-07-04 오전 12 52 42

이런식으로 호출 순서에 맞춰서 출력된당 (order가 클 수록 먼저 호출된 거)

@EunjiShin EunjiShin self-assigned this Jul 3, 2024
@EunjiShin EunjiShin added the 🛠 Setting 개발 환경 세팅 label Jul 3, 2024
Copy link
Collaborator

@pminsung12 pminsung12 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다~

Comment on lines +21 to +24
decorator:
datasource:
p6spy:
enable-logging: true
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인!

@pminsung12 pminsung12 merged commit f088444 into main Jul 3, 2024
4 checks passed
@pminsung12 pminsung12 deleted the feat/BSVR-55 branch July 3, 2024 15:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🛠 Setting 개발 환경 세팅 size/S
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants