Skip to content

Commit f117e31

Browse files
authored
Merge pull request #83 from KiKi-Hi/feat/monitor/KIKI-75-BE-로깅-구축
♻️ refactor/monitor/KIKI-75 : 로깅 시스템 최종 구축
2 parents 1c33c38 + 7909ba2 commit f117e31

File tree

9 files changed

+62
-40
lines changed

9 files changed

+62
-40
lines changed

.github/workflows/dev-ci-cd.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ jobs:
7272
echo "${{ secrets.APPLICATION_YML }}" > ./src/main/resources/application.yml
7373
echo "${{ secrets.APPLICATION_PROD_YML }}" > ./src/main/resources/application-prod.yml
7474
echo "${{ secrets.APPLICATION_OAUTH2_YML }}" > ./src/main/resources/application-oauth2.yml
75-
echo "${{ secrets.LOGBACK_SPRING_XML }}" > ./src/main/resources/logback-spring.xml
7675
7776
mkdir -p src/test/resources
7877
echo "${{ secrets.APPLICATION_TEST_YML }}" > ./src/test/resources/application-test.yml

docker/docker-compose.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ services:
2121
condition: service_healthy
2222
kibana:
2323
condition: service_healthy
24-
logstash01:
25-
condition: service_healthy
2624
networks:
2725
- monstache-network
2826

src/main/java/site/kikihi/custom/global/exception/GlobalExceptionHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class GlobalExceptionHandler {
3030
private ApiResponse<CustomException> handleCustomException(CustomException exception) {
3131

3232
/// 로그 발생
33-
log.error("[ERROR 로깅] : {}", exception.getMessage());
33+
log.error("[ERROR 로깅] : {}", exception.getErrorCode().getMessage());
3434

3535
return ApiResponse.fail(exception);
3636
}

src/main/java/site/kikihi/custom/global/logging/ControllerLoggingAspect.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,11 @@ public void logBeforeExecution(JoinPoint joinPoint) throws Throwable {
5050
}
5151

5252
// 로그 출력
53-
log.info("요청 정보 - 전체URL: {} | URI: {} | 메서드: {} | 유저: {} | Origin: {}",
54-
request.getRequestURL(),
55-
request.getRequestURI(),
53+
log.info("[HTTP 로깅]: {}, [{}] ,{}, {}",
54+
request.getHeader("Origin"),
5655
request.getMethod(),
57-
username,
58-
request.getHeader("Origin"));
59-
56+
request.getRequestURL(),
57+
username);
6058
}
59+
6160
}

src/main/java/site/kikihi/custom/platform/adapter/in/web/SearchController.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,16 @@ public class SearchController implements SearchControllerSpec {
3030
@GetMapping
3131
public ApiResponse<SliceResponse<ProductListResponse>> searchProducts(
3232
@RequestParam("keyword") String keyword,
33-
PageRequest pageRequest,
33+
@RequestParam int page,
34+
@RequestParam int size,
3435
@AuthenticationPrincipal PrincipalDetails principalDetails
3536
) {
3637

37-
/// Pageable
38-
Pageable pageable = org.springframework.data.domain.PageRequest.of(
39-
pageRequest.getPage() - 1,
40-
pageRequest.getSize(),
41-
Sort.by(Sort.Direction.DESC, "id")
42-
);
43-
4438
/// 유저가 없다면 null 저장
4539
UUID userId = principalDetails != null ? principalDetails.getId() : null;
4640

4741
/// 서비스 호출
48-
Slice<ProductListResponse> products = service.searchProducts(keyword, pageable, userId);
42+
Slice<ProductListResponse> products = service.searchProducts(keyword, page, size, userId);
4943

5044
/// 서비스 호출(총 검색 결과 개수)
5145
long countByKeyword = service.countByKeyword(keyword);

src/main/java/site/kikihi/custom/platform/adapter/in/web/swagger/SearchControllerSpec.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,12 @@ public interface SearchControllerSpec {
2525
ApiResponse<SliceResponse<ProductListResponse>> searchProducts(
2626
@Parameter(example = "하우징")
2727
@RequestParam("keyword") String keyword,
28-
PageRequest pageRequest,
28+
29+
@Parameter(example = "1")
30+
@RequestParam int page,
31+
32+
@Parameter(example = "20")
33+
@RequestParam int size,
2934
@AuthenticationPrincipal PrincipalDetails principalDetails
3035
);
3136

src/main/java/site/kikihi/custom/platform/application/in/search/SearchUseCase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
public interface SearchUseCase {
1919

2020
/// 검색
21-
Slice<ProductListResponse> searchProducts(String keyword, Pageable pageable, UUID userId);
21+
Slice<ProductListResponse> searchProducts(String keyword, int page, int size, UUID userId);
2222

2323
/// 나의 검색에 목록 확인하기
2424
List<Search> getMySearches(UUID userId);

src/main/java/site/kikihi/custom/platform/application/service/SearchService.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package site.kikihi.custom.platform.application.service;
22

3+
import lombok.extern.slf4j.Slf4j;
4+
import org.springframework.data.domain.PageRequest;
35
import org.springframework.data.domain.Pageable;
46
import org.springframework.data.domain.Slice;
57
import org.springframework.data.domain.SliceImpl;
@@ -30,6 +32,7 @@
3032
import java.util.UUID;
3133
import java.util.stream.Collectors;
3234

35+
@Slf4j
3336
@Service
3437
@RequiredArgsConstructor
3538
public class SearchService implements SearchUseCase {
@@ -47,9 +50,10 @@ public class SearchService implements SearchUseCase {
4750

4851
/// 키워드 검색 (name, description)
4952
@Override
50-
public Slice<ProductListResponse> searchProducts(String keyword, Pageable pageable, UUID userId) {
53+
public Slice<ProductListResponse> searchProducts(String keyword, int page, int size, UUID userId) {
5154

5255
/// Pageable 구성
56+
Pageable pageRequest = PageRequest.of(page - 1, size);
5357

5458
// match 쿼리 구성
5559
Query nameMatch = MatchQuery.of(m -> m.field("name").query(keyword))._toQuery();
@@ -65,7 +69,7 @@ public Slice<ProductListResponse> searchProducts(String keyword, Pageable pageab
6569
// NativeQuery
6670
NativeQuery query = NativeQuery.builder()
6771
.withQuery(boolQuery)
68-
.withPageable(pageable)
72+
.withPageable(pageRequest)
6973
.withMinScore(minScore)
7074
.build();
7175

@@ -91,9 +95,9 @@ public Slice<ProductListResponse> searchProducts(String keyword, Pageable pageab
9195

9296
/// 페이징 처리
9397
// 현재 페이지 결과 수
94-
boolean hasNext = checkNext(pageable.getPageNumber(), pageable.getPageSize(), searchHits);
98+
boolean hasNext = checkNext(page, size, searchHits);
9599

96-
Slice<Product> products = new SliceImpl<>(elasticProducts, pageable, hasNext);
100+
Slice<Product> products = new SliceImpl<>(elasticProducts, pageRequest, hasNext);
97101

98102
return toProductListResponse(userId, products);
99103
}
Lines changed: 38 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,42 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
12
<configuration>
2-
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
3-
<encoder>
4-
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n</pattern>
5-
</encoder>
6-
</appender>
3+
<springProfile name ="dev">
4+
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
5+
<encoder>
6+
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n</pattern>
7+
</encoder>
8+
</appender>
79

8-
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
9-
<destination>kkh-logstash:5044</destination>
10-
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
11-
<pattern>%msg%n</pattern>
12-
</encoder>
13-
</appender>
10+
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
11+
<destination>127.0.0.1:5044</destination>
12+
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
13+
<pattern>%msg%n</pattern>
14+
</encoder>
15+
</appender>
16+
17+
<root level="info">
18+
<appender-ref ref="CONSOLE"/>
19+
<appender-ref ref="LOGSTASH"/>
20+
</root>
21+
</springProfile>
22+
<springProfile name ="prod">
23+
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
24+
<encoder>
25+
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n</pattern>
26+
</encoder>
27+
</appender>
28+
29+
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
30+
<destination>kkh-logstash:5044</destination>
31+
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
32+
<pattern>%msg%n</pattern>
33+
</encoder>
34+
</appender>
35+
36+
<root level="info">
37+
<appender-ref ref="CONSOLE"/>
38+
<appender-ref ref="LOGSTASH"/>
39+
</root>
40+
</springProfile>
1441

15-
<root level="info">
16-
<appender-ref ref="CONSOLE"/>
17-
<appender-ref ref="LOGSTASH"/>
18-
</root>
1942
</configuration>

0 commit comments

Comments
 (0)