diff --git a/.github/workflows/dev-ci-cd.yml b/.github/workflows/dev-ci-cd.yml index 5bad4fa..d75f9a4 100644 --- a/.github/workflows/dev-ci-cd.yml +++ b/.github/workflows/dev-ci-cd.yml @@ -72,7 +72,6 @@ jobs: echo "${{ secrets.APPLICATION_YML }}" > ./src/main/resources/application.yml echo "${{ secrets.APPLICATION_PROD_YML }}" > ./src/main/resources/application-prod.yml echo "${{ secrets.APPLICATION_OAUTH2_YML }}" > ./src/main/resources/application-oauth2.yml - echo "${{ secrets.LOGBACK_SPRING_XML }}" > ./src/main/resources/logback-spring.xml mkdir -p src/test/resources echo "${{ secrets.APPLICATION_TEST_YML }}" > ./src/test/resources/application-test.yml diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 243b355..d5b6d63 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -21,8 +21,6 @@ services: condition: service_healthy kibana: condition: service_healthy - logstash01: - condition: service_healthy networks: - monstache-network diff --git a/src/main/java/site/kikihi/custom/global/exception/GlobalExceptionHandler.java b/src/main/java/site/kikihi/custom/global/exception/GlobalExceptionHandler.java index 468a27c..1982eac 100644 --- a/src/main/java/site/kikihi/custom/global/exception/GlobalExceptionHandler.java +++ b/src/main/java/site/kikihi/custom/global/exception/GlobalExceptionHandler.java @@ -30,7 +30,7 @@ public class GlobalExceptionHandler { private ApiResponse handleCustomException(CustomException exception) { /// 로그 발생 - log.error("[ERROR 로깅] : {}", exception.getMessage()); + log.error("[ERROR 로깅] : {}", exception.getErrorCode().getMessage()); return ApiResponse.fail(exception); } diff --git a/src/main/java/site/kikihi/custom/global/logging/ControllerLoggingAspect.java b/src/main/java/site/kikihi/custom/global/logging/ControllerLoggingAspect.java index b3eb7b5..6988b8f 100644 --- a/src/main/java/site/kikihi/custom/global/logging/ControllerLoggingAspect.java +++ b/src/main/java/site/kikihi/custom/global/logging/ControllerLoggingAspect.java @@ -50,12 +50,11 @@ public void logBeforeExecution(JoinPoint joinPoint) throws Throwable { } // 로그 출력 - log.info("요청 정보 - 전체URL: {} | URI: {} | 메서드: {} | 유저: {} | Origin: {}", - request.getRequestURL(), - request.getRequestURI(), + log.info("[HTTP 로깅]: {}, [{}] ,{}, {}", + request.getHeader("Origin"), request.getMethod(), - username, - request.getHeader("Origin")); - + request.getRequestURL(), + username); } + } diff --git a/src/main/java/site/kikihi/custom/platform/adapter/in/web/SearchController.java b/src/main/java/site/kikihi/custom/platform/adapter/in/web/SearchController.java index a902077..9d194cb 100644 --- a/src/main/java/site/kikihi/custom/platform/adapter/in/web/SearchController.java +++ b/src/main/java/site/kikihi/custom/platform/adapter/in/web/SearchController.java @@ -30,22 +30,16 @@ public class SearchController implements SearchControllerSpec { @GetMapping public ApiResponse> searchProducts( @RequestParam("keyword") String keyword, - PageRequest pageRequest, + @RequestParam int page, + @RequestParam int size, @AuthenticationPrincipal PrincipalDetails principalDetails ) { - /// Pageable - Pageable pageable = org.springframework.data.domain.PageRequest.of( - pageRequest.getPage() - 1, - pageRequest.getSize(), - Sort.by(Sort.Direction.DESC, "id") - ); - /// 유저가 없다면 null 저장 UUID userId = principalDetails != null ? principalDetails.getId() : null; /// 서비스 호출 - Slice products = service.searchProducts(keyword, pageable, userId); + Slice products = service.searchProducts(keyword, page, size, userId); /// 서비스 호출(총 검색 결과 개수) long countByKeyword = service.countByKeyword(keyword); diff --git a/src/main/java/site/kikihi/custom/platform/adapter/in/web/swagger/SearchControllerSpec.java b/src/main/java/site/kikihi/custom/platform/adapter/in/web/swagger/SearchControllerSpec.java index c47fb25..183c1a7 100644 --- a/src/main/java/site/kikihi/custom/platform/adapter/in/web/swagger/SearchControllerSpec.java +++ b/src/main/java/site/kikihi/custom/platform/adapter/in/web/swagger/SearchControllerSpec.java @@ -25,7 +25,12 @@ public interface SearchControllerSpec { ApiResponse> searchProducts( @Parameter(example = "하우징") @RequestParam("keyword") String keyword, - PageRequest pageRequest, + + @Parameter(example = "1") + @RequestParam int page, + + @Parameter(example = "20") + @RequestParam int size, @AuthenticationPrincipal PrincipalDetails principalDetails ); diff --git a/src/main/java/site/kikihi/custom/platform/application/in/search/SearchUseCase.java b/src/main/java/site/kikihi/custom/platform/application/in/search/SearchUseCase.java index d080baf..dd27eb6 100644 --- a/src/main/java/site/kikihi/custom/platform/application/in/search/SearchUseCase.java +++ b/src/main/java/site/kikihi/custom/platform/application/in/search/SearchUseCase.java @@ -18,7 +18,7 @@ public interface SearchUseCase { /// 검색 - Slice searchProducts(String keyword, Pageable pageable, UUID userId); + Slice searchProducts(String keyword, int page, int size, UUID userId); /// 나의 검색에 목록 확인하기 List getMySearches(UUID userId); diff --git a/src/main/java/site/kikihi/custom/platform/application/service/SearchService.java b/src/main/java/site/kikihi/custom/platform/application/service/SearchService.java index f119336..5e53e8e 100644 --- a/src/main/java/site/kikihi/custom/platform/application/service/SearchService.java +++ b/src/main/java/site/kikihi/custom/platform/application/service/SearchService.java @@ -1,5 +1,7 @@ package site.kikihi.custom.platform.application.service; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Slice; import org.springframework.data.domain.SliceImpl; @@ -30,6 +32,7 @@ import java.util.UUID; import java.util.stream.Collectors; +@Slf4j @Service @RequiredArgsConstructor public class SearchService implements SearchUseCase { @@ -47,9 +50,10 @@ public class SearchService implements SearchUseCase { /// 키워드 검색 (name, description) @Override - public Slice searchProducts(String keyword, Pageable pageable, UUID userId) { + public Slice searchProducts(String keyword, int page, int size, UUID userId) { /// Pageable 구성 + Pageable pageRequest = PageRequest.of(page - 1, size); // match 쿼리 구성 Query nameMatch = MatchQuery.of(m -> m.field("name").query(keyword))._toQuery(); @@ -65,7 +69,7 @@ public Slice searchProducts(String keyword, Pageable pageab // NativeQuery NativeQuery query = NativeQuery.builder() .withQuery(boolQuery) - .withPageable(pageable) + .withPageable(pageRequest) .withMinScore(minScore) .build(); @@ -91,9 +95,9 @@ public Slice searchProducts(String keyword, Pageable pageab /// 페이징 처리 // 현재 페이지 결과 수 - boolean hasNext = checkNext(pageable.getPageNumber(), pageable.getPageSize(), searchHits); + boolean hasNext = checkNext(page, size, searchHits); - Slice products = new SliceImpl<>(elasticProducts, pageable, hasNext); + Slice products = new SliceImpl<>(elasticProducts, pageRequest, hasNext); return toProductListResponse(userId, products); } diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index 110da57..c60cfd3 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -1,19 +1,42 @@ + - - - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n - - + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n + + - - kkh-logstash:5044 - - %msg%n - - + + 127.0.0.1:5044 + + %msg%n + + + + + + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n + + + + + kkh-logstash:5044 + + %msg%n + + + + + + + + - - - -