From 9c8712daf20204e67abdc2586bd92b5ca219f6a4 Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Sat, 1 Feb 2025 16:08:51 +0900 Subject: [PATCH 1/9] =?UTF-8?q?CLAP-196=20Add:=20ContentCachingFilter=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=ED=95=98=EC=97=AC=20request=20=EC=BA=90?= =?UTF-8?q?=EC=8B=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/aop/ContentCachingFilter.java | 24 +++++++++++++++++++ .../clap/server/config/aop/LoggingAspect.java | 7 +----- .../server/domain/model/log/MemberLog.java | 2 +- 3 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 src/main/java/clap/server/config/aop/ContentCachingFilter.java diff --git a/src/main/java/clap/server/config/aop/ContentCachingFilter.java b/src/main/java/clap/server/config/aop/ContentCachingFilter.java new file mode 100644 index 00000000..e003c6b9 --- /dev/null +++ b/src/main/java/clap/server/config/aop/ContentCachingFilter.java @@ -0,0 +1,24 @@ +package clap.server.config.aop; + +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; +import org.springframework.web.util.ContentCachingRequestWrapper; + +import java.io.IOException; + +@Component +public class ContentCachingFilter extends OncePerRequestFilter { + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) + throws ServletException, IOException { + System.out.println("In filter"); + ContentCachingRequestWrapper contentCachingRequestWrapper = new ContentCachingRequestWrapper(request); + filterChain.doFilter(contentCachingRequestWrapper, response); + System.out.println("after doFilter"); + System.out.println(new String(contentCachingRequestWrapper.getContentAsByteArray())); + } +} \ No newline at end of file diff --git a/src/main/java/clap/server/config/aop/LoggingAspect.java b/src/main/java/clap/server/config/aop/LoggingAspect.java index 5355d373..e1460087 100644 --- a/src/main/java/clap/server/config/aop/LoggingAspect.java +++ b/src/main/java/clap/server/config/aop/LoggingAspect.java @@ -45,9 +45,6 @@ public void controllerMethods() { public Object logApiRequests(ProceedingJoinPoint joinPoint) throws Throwable { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); HttpServletRequest request = attributes.getRequest(); - if (!(request instanceof ContentCachingRequestWrapper)) { - request = new ContentCachingRequestWrapper(request); - } HttpServletResponse response = attributes.getResponse(); Object result = null; @@ -98,7 +95,6 @@ private String getCustomCode(HttpServletResponse response) { return customCode != null ? customCode : "CUSTOM" + (response != null ? response.getStatus() : 500); } - //TODO: 로그인 시도 시 닉네임 파싱하도록 수정 private String getNicknameFromRequestBody(HttpServletRequest request) { try { String requestBody = getRequestBody(request); @@ -109,14 +105,13 @@ private String getNicknameFromRequestBody(HttpServletRequest request) { } } - //TODO: 제거 private String getRequestBody(HttpServletRequest request) { try { ContentCachingRequestWrapper cachingRequest = (ContentCachingRequestWrapper) request; byte[] content = cachingRequest.getContentAsByteArray(); return new String(content, StandardCharsets.UTF_8); } catch (Exception e) { - return "ERROR: Unable to read request body"; + return "요청 바디의 내용을 읽을 수 없음"; } } diff --git a/src/main/java/clap/server/domain/model/log/MemberLog.java b/src/main/java/clap/server/domain/model/log/MemberLog.java index 566887d9..fce005a0 100644 --- a/src/main/java/clap/server/domain/model/log/MemberLog.java +++ b/src/main/java/clap/server/domain/model/log/MemberLog.java @@ -25,7 +25,7 @@ public static MemberLog createMemberLog(HttpServletRequest request, HttpServletR .statusCode(response.getStatus()) .customStatusCode(customCode) .requestBody(requestBody) - .responseBody(responseResult != null ? responseResult.toString() : "UNKNOWN") + .responseBody(responseResult != null ? responseResult.toString() : "일반 실패") .requestAt(LocalDateTime.now()) .logStatus(logStatus) .member(member) From 36e0d8980e2aa83301a58176b514ffabb148fea2 Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Sat, 1 Feb 2025 17:40:27 +0900 Subject: [PATCH 2/9] =?UTF-8?q?CLAP-196=20Fix:=20=EC=9E=91=EC=97=85=20?= =?UTF-8?q?=EC=9A=94=EC=B2=AD=20=EB=AA=A9=EB=A1=9D=20=EC=9D=91=EB=8B=B5=20?= =?UTF-8?q?imageUrl=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inbound/web/dto/task/FilterAllTasksResponse.java | 2 ++ .../web/dto/task/FilterAssignedTaskListResponse.java | 1 + .../web/dto/task/FilterPendingApprovalResponse.java | 3 ++- .../web/dto/task/FilterRequestedTasksResponse.java | 1 + .../java/clap/server/application/mapper/TaskMapper.java | 9 +++++++-- src/main/java/clap/server/config/aop/LoggingAspect.java | 7 ------- 6 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterAllTasksResponse.java b/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterAllTasksResponse.java index 71e6210b..e8caf21d 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterAllTasksResponse.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterAllTasksResponse.java @@ -12,7 +12,9 @@ public record FilterAllTasksResponse( String categoryName, String title, String processorName, + String processorUrl, String requesterName, + String requesterUrl, TaskStatus taskStatus, LocalDateTime finishedAt ) { diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterAssignedTaskListResponse.java b/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterAssignedTaskListResponse.java index 0f444351..408dace7 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterAssignedTaskListResponse.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterAssignedTaskListResponse.java @@ -12,6 +12,7 @@ public record FilterAssignedTaskListResponse( String categoryName, String title, String requesterName, + String requesterUrl, TaskStatus taskStatus, LocalDateTime finishedAt ) {} diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterPendingApprovalResponse.java b/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterPendingApprovalResponse.java index 0ab86e16..9fbaeee1 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterPendingApprovalResponse.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterPendingApprovalResponse.java @@ -11,6 +11,7 @@ public record FilterPendingApprovalResponse( String mainCategoryName, String categoryName, String title, - String requesterName + String requesterName, + String requesterUrl ) { } diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterRequestedTasksResponse.java b/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterRequestedTasksResponse.java index e7bf680b..8f1540e0 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterRequestedTasksResponse.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterRequestedTasksResponse.java @@ -12,6 +12,7 @@ public record FilterRequestedTasksResponse( String categoryName, String title, String processorName, + String processorUrl, TaskStatus taskStatus, LocalDateTime finishedAt ) { diff --git a/src/main/java/clap/server/application/mapper/TaskMapper.java b/src/main/java/clap/server/application/mapper/TaskMapper.java index 2a88dab0..c03911eb 100644 --- a/src/main/java/clap/server/application/mapper/TaskMapper.java +++ b/src/main/java/clap/server/application/mapper/TaskMapper.java @@ -38,6 +38,7 @@ public static FilterRequestedTasksResponse toFilterRequestedTasksResponse(Task t task.getCategory().getName(), task.getTitle(), task.getProcessor() != null ? task.getProcessor().getMemberInfo().getNickname() : "", + task.getProcessor() != null ? task.getProcessor().getImageUrl() : "", task.getTaskStatus(), task.getFinishedAt() != null ? task.getFinishedAt() : null ); @@ -51,6 +52,7 @@ public static FilterAssignedTaskListResponse toFilterAssignedTaskListResponse(Ta task.getCategory().getName(), task.getTitle(), task.getRequester() != null ? task.getRequester().getMemberInfo().getNickname() : "", + task.getRequester() != null ? task.getRequester().getImageUrl() : "", task.getTaskStatus(), task.getFinishedAt() != null ? task.getFinishedAt() : null ); @@ -63,7 +65,8 @@ public static FilterPendingApprovalResponse toFilterPendingApprovalTasksResponse task.getCategory().getMainCategory().getName(), task.getCategory().getName(), task.getTitle(), - task.getRequester().getMemberInfo().getNickname() + task.getRequester() != null ? task.getRequester().getMemberInfo().getNickname() : "", + task.getRequester() != null ? task.getRequester().getImageUrl() : "" ); } @@ -106,8 +109,10 @@ public static FilterAllTasksResponse toFilterAllTasksResponse(Task task) { task.getCategory().getMainCategory().getName(), task.getCategory().getName(), task.getTitle(), - task.getRequester().getMemberInfo().getNickname(), task.getProcessor() != null ? task.getProcessor().getMemberInfo().getNickname() : "", + task.getProcessor() != null ? task.getProcessor().getImageUrl() : "", + task.getRequester() != null ? task.getRequester().getMemberInfo().getNickname() : "", + task.getRequester() != null ? task.getRequester().getImageUrl() : "", task.getTaskStatus(), task.getFinishedAt() != null ? task.getFinishedAt() : null ); diff --git a/src/main/java/clap/server/config/aop/LoggingAspect.java b/src/main/java/clap/server/config/aop/LoggingAspect.java index e1460087..a5990563 100644 --- a/src/main/java/clap/server/config/aop/LoggingAspect.java +++ b/src/main/java/clap/server/config/aop/LoggingAspect.java @@ -51,9 +51,6 @@ public Object logApiRequests(ProceedingJoinPoint joinPoint) throws Throwable { try { result = joinPoint.proceed(); } catch (Exception ex) { - log.error("Exception occurred: {}", ex.getMessage()); - log.info("response.getStatus()={}",response.getStatus()); - log.info("getRequestBody()={}", getRequestBody(request)); throw ex; } finally { MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature(); @@ -61,10 +58,6 @@ public Object logApiRequests(ProceedingJoinPoint joinPoint) throws Throwable { String customCode = getCustomCode(response); if (logType != null) { if (LogStatus.LOGIN.equals(logType)) { - log.info("result={}",result); - log.info("response.getStatus()={}",response.getStatus()); - log.info("getRequestBody()={}", getRequestBody(request)); - log.info("getNicknameFromRequestBody()={}", getNicknameFromRequestBody(request)); createAnonymousLogsUsecase.createAnonymousLog(request, response, result, logType, customCode, getRequestBody(request), getNicknameFromRequestBody(request)); } else { if (!isUserAuthenticated()) { From 3c88c5425a9dd83659d1d90ee1ade8407e849d47 Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Sat, 1 Feb 2025 22:15:14 +0900 Subject: [PATCH 3/9] =?UTF-8?q?CLAP-196=20Fix:=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20=EC=A3=BC=EC=84=9D=20=EB=B0=8F=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/clap/server/config/aop/ContentCachingFilter.java | 3 --- src/main/java/clap/server/config/aop/LoggingAspect.java | 2 -- 2 files changed, 5 deletions(-) diff --git a/src/main/java/clap/server/config/aop/ContentCachingFilter.java b/src/main/java/clap/server/config/aop/ContentCachingFilter.java index e003c6b9..f4f50619 100644 --- a/src/main/java/clap/server/config/aop/ContentCachingFilter.java +++ b/src/main/java/clap/server/config/aop/ContentCachingFilter.java @@ -15,10 +15,7 @@ public class ContentCachingFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { - System.out.println("In filter"); ContentCachingRequestWrapper contentCachingRequestWrapper = new ContentCachingRequestWrapper(request); filterChain.doFilter(contentCachingRequestWrapper, response); - System.out.println("after doFilter"); - System.out.println(new String(contentCachingRequestWrapper.getContentAsByteArray())); } } \ No newline at end of file diff --git a/src/main/java/clap/server/config/aop/LoggingAspect.java b/src/main/java/clap/server/config/aop/LoggingAspect.java index a5990563..a2e491ad 100644 --- a/src/main/java/clap/server/config/aop/LoggingAspect.java +++ b/src/main/java/clap/server/config/aop/LoggingAspect.java @@ -26,7 +26,6 @@ import org.springframework.web.context.request.ServletRequestAttributes; import java.nio.charset.StandardCharsets; -import java.time.LocalDateTime; @Slf4j @Aspect @@ -82,7 +81,6 @@ private LogStatus getLogType(MethodSignature methodSignature) { } } - //TODO: 로그인 시도에 대한 에러 잡도록 수정 private String getCustomCode(HttpServletResponse response) { String customCode = ErrorContext.getCustomCode(); return customCode != null ? customCode : "CUSTOM" + (response != null ? response.getStatus() : 500); From f3720d4f6993a8e4cf34288275d04b4dc682c325 Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Sun, 2 Feb 2025 11:19:01 +0900 Subject: [PATCH 4/9] =?UTF-8?q?CLAP-196=20Add:=20=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=EB=A1=9C=EA=B9=85=EC=9D=84=20=EC=9C=84=ED=95=9C=20=EC=9D=B8?= =?UTF-8?q?=ED=84=B0=EC=85=89=ED=84=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/config/aop/InterceptorConfig.java | 13 ++++++++++ .../server/config/aop/LoggingInterceptor.java | 25 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 src/main/java/clap/server/config/aop/InterceptorConfig.java create mode 100644 src/main/java/clap/server/config/aop/LoggingInterceptor.java diff --git a/src/main/java/clap/server/config/aop/InterceptorConfig.java b/src/main/java/clap/server/config/aop/InterceptorConfig.java new file mode 100644 index 00000000..ee7596ab --- /dev/null +++ b/src/main/java/clap/server/config/aop/InterceptorConfig.java @@ -0,0 +1,13 @@ +package clap.server.config.aop; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class InterceptorConfig implements WebMvcConfigurer { + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(new LoggingInterceptor()); + } +} \ No newline at end of file diff --git a/src/main/java/clap/server/config/aop/LoggingInterceptor.java b/src/main/java/clap/server/config/aop/LoggingInterceptor.java new file mode 100644 index 00000000..303c382a --- /dev/null +++ b/src/main/java/clap/server/config/aop/LoggingInterceptor.java @@ -0,0 +1,25 @@ +package clap.server.config.aop; + +import io.micrometer.common.lang.Nullable; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.util.ContentCachingRequestWrapper; + +import static clap.server.exception.ErrorContext.getCustomCode; + +@Slf4j +public class LoggingInterceptor implements HandlerInterceptor { + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, + @Nullable Exception ex) throws Exception { + ContentCachingRequestWrapper cachingRequest = (ContentCachingRequestWrapper) request; + System.out.println("Interceptor"); + System.out.println(new String(cachingRequest.getContentAsByteArray())); + int statusCode = response.getStatus(); + String customCode = getCustomCode(); + //TODO: 여기서 error에 대한 log 저장 + log.info("API 응답 예외 발생 - Status: {}, CustomCode: {}", statusCode, customCode); + } +} \ No newline at end of file From df1acbeb18154dc77bdb9468a2393e9486f36d8c Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Sun, 2 Feb 2025 15:52:13 +0900 Subject: [PATCH 5/9] =?UTF-8?q?CLAP-196=20Refactor:=20=EC=98=88=EC=99=B8?= =?UTF-8?q?=EB=A5=BC=20=ED=86=B5=ED=95=9C=20statusCode=20=ED=8C=8C?= =?UTF-8?q?=EC=8B=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../log/CreateAnonymousLogsUsecase.java | 2 +- .../inbound/log/CreateMemberLogsUsecase.java | 2 +- .../log/CreateAnonymousLogsService.java | 4 +- .../service/log/CreateMemberLogsService.java | 4 +- .../server/config/aop/InterceptorConfig.java | 13 ------- .../clap/server/config/aop/LoggingAspect.java | 37 +++++++++++++------ .../server/config/aop/LoggingInterceptor.java | 25 ------------- .../server/domain/model/log/AnonymousLog.java | 8 ++-- .../server/domain/model/log/MemberLog.java | 8 ++-- 9 files changed, 39 insertions(+), 64 deletions(-) delete mode 100644 src/main/java/clap/server/config/aop/InterceptorConfig.java delete mode 100644 src/main/java/clap/server/config/aop/LoggingInterceptor.java diff --git a/src/main/java/clap/server/application/port/inbound/log/CreateAnonymousLogsUsecase.java b/src/main/java/clap/server/application/port/inbound/log/CreateAnonymousLogsUsecase.java index e21c6f5c..9c6eca65 100644 --- a/src/main/java/clap/server/application/port/inbound/log/CreateAnonymousLogsUsecase.java +++ b/src/main/java/clap/server/application/port/inbound/log/CreateAnonymousLogsUsecase.java @@ -7,6 +7,6 @@ import java.time.LocalDateTime; public interface CreateAnonymousLogsUsecase { - void createAnonymousLog(HttpServletRequest request, HttpServletResponse response, Object result, LogStatus logType, String customCode, String requestBody, String nicknameFromRequestBody); + void createAnonymousLog(HttpServletRequest request, int statusCode, LogStatus logStatus, Object responseBody, String requestBody, String nickName); } diff --git a/src/main/java/clap/server/application/port/inbound/log/CreateMemberLogsUsecase.java b/src/main/java/clap/server/application/port/inbound/log/CreateMemberLogsUsecase.java index b6870930..8b604cf1 100644 --- a/src/main/java/clap/server/application/port/inbound/log/CreateMemberLogsUsecase.java +++ b/src/main/java/clap/server/application/port/inbound/log/CreateMemberLogsUsecase.java @@ -8,5 +8,5 @@ public interface CreateMemberLogsUsecase { - void createMemberLog(HttpServletRequest request, HttpServletResponse response, Object result, LogStatus logType, String customCode, String body, Long userId); + void createMemberLog(HttpServletRequest request, int statusCode, LogStatus logStatus, Object responseBody, String requestBody, Long userId); } diff --git a/src/main/java/clap/server/application/service/log/CreateAnonymousLogsService.java b/src/main/java/clap/server/application/service/log/CreateAnonymousLogsService.java index f2152d64..ad75a402 100644 --- a/src/main/java/clap/server/application/service/log/CreateAnonymousLogsService.java +++ b/src/main/java/clap/server/application/service/log/CreateAnonymousLogsService.java @@ -18,8 +18,8 @@ public class CreateAnonymousLogsService implements CreateAnonymousLogsUsecase { private final ApiLogPersistenceAdapter apiLogPersistenceAdapter; @Override - public void createAnonymousLog(HttpServletRequest request, HttpServletResponse response, Object result, LogStatus logType, String customCode, String body, String nickName) { - AnonymousLog anonymousLog = AnonymousLog.createAnonymousLog(request, response, result, logType, customCode, body, nickName); + public void createAnonymousLog(HttpServletRequest request, int statusCode, LogStatus logStatus, Object responseBody, String requestBody, String nickName) { + AnonymousLog anonymousLog = AnonymousLog.createAnonymousLog(request, statusCode, logStatus, responseBody, requestBody, nickName); apiLogPersistenceAdapter.saveAnonymousLog(anonymousLog); } } diff --git a/src/main/java/clap/server/application/service/log/CreateMemberLogsService.java b/src/main/java/clap/server/application/service/log/CreateMemberLogsService.java index 9026e8f5..7724a1cd 100644 --- a/src/main/java/clap/server/application/service/log/CreateMemberLogsService.java +++ b/src/main/java/clap/server/application/service/log/CreateMemberLogsService.java @@ -23,9 +23,9 @@ public class CreateMemberLogsService implements CreateMemberLogsUsecase { @Override @Transactional - public void createMemberLog(HttpServletRequest request, HttpServletResponse response, Object result, LogStatus logType, String customCode, String body, Long userId) { + public void createMemberLog(HttpServletRequest request, int statusCode, LogStatus logStatus, Object responseBody, String requestBody, Long userId) { Member member = memberService.findById(userId); - MemberLog memberLog = MemberLog.createMemberLog(request, response, result, logType, customCode, body, member); + MemberLog memberLog = MemberLog.createMemberLog(request, statusCode, logStatus, responseBody, requestBody, member); apiLogPersistenceAdapter.saveMemberLog(memberLog); } } diff --git a/src/main/java/clap/server/config/aop/InterceptorConfig.java b/src/main/java/clap/server/config/aop/InterceptorConfig.java deleted file mode 100644 index ee7596ab..00000000 --- a/src/main/java/clap/server/config/aop/InterceptorConfig.java +++ /dev/null @@ -1,13 +0,0 @@ -package clap.server.config.aop; - -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -@Configuration -public class InterceptorConfig implements WebMvcConfigurer { - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(new LoggingInterceptor()); - } -} \ No newline at end of file diff --git a/src/main/java/clap/server/config/aop/LoggingAspect.java b/src/main/java/clap/server/config/aop/LoggingAspect.java index a2e491ad..7e792858 100644 --- a/src/main/java/clap/server/config/aop/LoggingAspect.java +++ b/src/main/java/clap/server/config/aop/LoggingAspect.java @@ -6,6 +6,7 @@ import clap.server.application.port.inbound.log.CreateAnonymousLogsUsecase; import clap.server.application.port.inbound.log.CreateMemberLogsUsecase; import clap.server.config.annotation.LogType; +import clap.server.exception.BaseException; import clap.server.exception.ErrorContext; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -18,9 +19,13 @@ import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.http.HttpStatus; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; +import org.springframework.web.server.ResponseStatusException; +import org.springframework.web.servlet.HandlerExceptionResolver; +import org.springframework.web.servlet.ModelAndView; import org.springframework.web.util.ContentCachingRequestWrapper; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -35,6 +40,7 @@ public class LoggingAspect { private final ObjectMapper objectMapper; private final CreateAnonymousLogsUsecase createAnonymousLogsUsecase; private final CreateMemberLogsUsecase createMemberLogsUsecase; + private final HandlerExceptionResolver handlerExceptionResolver; @Pointcut("execution(* clap.server.adapter.inbound.web..*Controller.*(..))") public void controllerMethods() { @@ -47,24 +53,36 @@ public Object logApiRequests(ProceedingJoinPoint joinPoint) throws Throwable { HttpServletResponse response = attributes.getResponse(); Object result = null; + Exception capturedException = null; try { result = joinPoint.proceed(); } catch (Exception ex) { + capturedException = ex; throw ex; } finally { - MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature(); - LogStatus logType = getLogType(methodSignature); - String customCode = getCustomCode(response); - if (logType != null) { - if (LogStatus.LOGIN.equals(logType)) { - createAnonymousLogsUsecase.createAnonymousLog(request, response, result, logType, customCode, getRequestBody(request), getNicknameFromRequestBody(request)); + LogStatus logStatus = getLogType((MethodSignature) joinPoint.getSignature()); + int statusCode; + if (capturedException != null) { + if (capturedException instanceof BaseException e) { + statusCode = e.getCode().getHttpStatus().value(); + } else { + ModelAndView modelAndView = handlerExceptionResolver.resolveException(request, response, null, capturedException); + statusCode = modelAndView.getStatus().value(); + } + } else { + statusCode = response.getStatus(); + } + + if (logStatus != null) { + if (LogStatus.LOGIN.equals(logStatus)) { + createAnonymousLogsUsecase.createAnonymousLog(request, statusCode, logStatus, result, getRequestBody(request), getNicknameFromRequestBody(request)); } else { if (!isUserAuthenticated()) { log.error("로그인 시도 로그를 기록할 수 없음"); } else { Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if (principal instanceof SecurityUserDetails userDetails) { - createMemberLogsUsecase.createMemberLog(request, response, result, logType, customCode, getRequestBody(request), userDetails.getUserId()); + createMemberLogsUsecase.createMemberLog(request, statusCode, logStatus, result, getRequestBody(request), userDetails.getUserId()); } } } @@ -81,11 +99,6 @@ private LogStatus getLogType(MethodSignature methodSignature) { } } - private String getCustomCode(HttpServletResponse response) { - String customCode = ErrorContext.getCustomCode(); - return customCode != null ? customCode : "CUSTOM" + (response != null ? response.getStatus() : 500); - } - private String getNicknameFromRequestBody(HttpServletRequest request) { try { String requestBody = getRequestBody(request); diff --git a/src/main/java/clap/server/config/aop/LoggingInterceptor.java b/src/main/java/clap/server/config/aop/LoggingInterceptor.java deleted file mode 100644 index 303c382a..00000000 --- a/src/main/java/clap/server/config/aop/LoggingInterceptor.java +++ /dev/null @@ -1,25 +0,0 @@ -package clap.server.config.aop; - -import io.micrometer.common.lang.Nullable; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.servlet.HandlerInterceptor; -import org.springframework.web.util.ContentCachingRequestWrapper; - -import static clap.server.exception.ErrorContext.getCustomCode; - -@Slf4j -public class LoggingInterceptor implements HandlerInterceptor { - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, - @Nullable Exception ex) throws Exception { - ContentCachingRequestWrapper cachingRequest = (ContentCachingRequestWrapper) request; - System.out.println("Interceptor"); - System.out.println(new String(cachingRequest.getContentAsByteArray())); - int statusCode = response.getStatus(); - String customCode = getCustomCode(); - //TODO: 여기서 error에 대한 log 저장 - log.info("API 응답 예외 발생 - Status: {}, CustomCode: {}", statusCode, customCode); - } -} \ No newline at end of file diff --git a/src/main/java/clap/server/domain/model/log/AnonymousLog.java b/src/main/java/clap/server/domain/model/log/AnonymousLog.java index c0324740..282a7947 100644 --- a/src/main/java/clap/server/domain/model/log/AnonymousLog.java +++ b/src/main/java/clap/server/domain/model/log/AnonymousLog.java @@ -16,15 +16,15 @@ public class AnonymousLog extends ApiLog { private String loginNickname; - public static AnonymousLog createAnonymousLog(HttpServletRequest request, HttpServletResponse response, Object responseResult, LogStatus logStatus, String customCode, String requestBody, String nickName) { + public static AnonymousLog createAnonymousLog(HttpServletRequest request, int statusCode, LogStatus logStatus, Object responseBody, String requestBody, String nickName) { return AnonymousLog.builder() .clientIp(ClientIpParseUtil.getClientIp(request)) .requestUrl(request.getRequestURI()) .requestMethod(request.getMethod()) - .statusCode(response.getStatus()) - .customStatusCode(customCode) + .statusCode(statusCode) + .customStatusCode("") .requestBody(requestBody) - .responseBody(responseResult != null ? responseResult.toString() : "로그인 실패") + .responseBody(responseBody != null ? responseBody.toString() : "로그인 실패") .requestAt(LocalDateTime.now()) .logStatus(logStatus) .loginNickname(nickName) diff --git a/src/main/java/clap/server/domain/model/log/MemberLog.java b/src/main/java/clap/server/domain/model/log/MemberLog.java index fce005a0..69896cf1 100644 --- a/src/main/java/clap/server/domain/model/log/MemberLog.java +++ b/src/main/java/clap/server/domain/model/log/MemberLog.java @@ -17,15 +17,15 @@ public class MemberLog extends ApiLog { private Member member; - public static MemberLog createMemberLog(HttpServletRequest request, HttpServletResponse response, Object responseResult, LogStatus logStatus, String customCode, String requestBody, Member member) { + public static MemberLog createMemberLog(HttpServletRequest request, int statusCode, LogStatus logStatus, Object responseBody, String requestBody, Member member) { return MemberLog.builder() .clientIp(ClientIpParseUtil.getClientIp(request)) .requestUrl(request.getRequestURI()) .requestMethod(request.getMethod()) - .statusCode(response.getStatus()) - .customStatusCode(customCode) + .statusCode(statusCode) + .customStatusCode("") .requestBody(requestBody) - .responseBody(responseResult != null ? responseResult.toString() : "일반 실패") + .responseBody(responseBody != null ? responseBody.toString() : "일반 실패") .requestAt(LocalDateTime.now()) .logStatus(logStatus) .member(member) From 8f05881ef96e9445fb9383fae16e2fcc001bc688 Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Sun, 2 Feb 2025 16:02:41 +0900 Subject: [PATCH 6/9] =?UTF-8?q?CLAP-196=20Fix:=20memberLogResponse=20reque?= =?UTF-8?q?stAt=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/inbound/web/dto/log/AnonymousLogResponse.java | 2 -- .../adapter/inbound/web/dto/log/MemberLogResponse.java | 2 +- .../outbound/persistense/ApiLogPersistenceAdapter.java | 6 ------ .../clap/server/application/mapper/response/LogMapper.java | 1 - .../application/port/inbound/log/FindApiLogsUsecase.java | 1 - .../server/application/port/outbound/log/LoadLogPort.java | 1 - .../server/application/service/log/FindApiLogsService.java | 7 ------- 7 files changed, 1 insertion(+), 19 deletions(-) diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/log/AnonymousLogResponse.java b/src/main/java/clap/server/adapter/inbound/web/dto/log/AnonymousLogResponse.java index bc74da6b..d0e7b772 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/log/AnonymousLogResponse.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/log/AnonymousLogResponse.java @@ -17,8 +17,6 @@ public record AnonymousLogResponse( String clientIp, @NotBlank Integer statusCode, - @NotNull - String customStatusCode, int failedAttempts ) { } diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/log/MemberLogResponse.java b/src/main/java/clap/server/adapter/inbound/web/dto/log/MemberLogResponse.java index 1c499ce7..950695e6 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/log/MemberLogResponse.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/log/MemberLogResponse.java @@ -11,7 +11,7 @@ public record MemberLogResponse( Long logId, LogStatus logStatus, @NotBlank - LocalDateTime responseAt, + LocalDateTime requestAt, String nickName, String clientIp, @NotBlank diff --git a/src/main/java/clap/server/adapter/outbound/persistense/ApiLogPersistenceAdapter.java b/src/main/java/clap/server/adapter/outbound/persistense/ApiLogPersistenceAdapter.java index dd3d9f25..e9d0bb8f 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/ApiLogPersistenceAdapter.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/ApiLogPersistenceAdapter.java @@ -44,12 +44,6 @@ public void saveAnonymousLog(AnonymousLog anonymousLog) { apiLogRepository.save(apiLogPersistenceMapper.mapAnonymousLogToEntity(anonymousLog, anonymousLog.getLoginNickname())); } - @Override - public List findAllLogs() { - return apiLogRepository.findAll().stream() - .map(apiLogPersistenceMapper::mapLogEntityToDomain) - .toList(); - } @Override public Page filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable) { diff --git a/src/main/java/clap/server/application/mapper/response/LogMapper.java b/src/main/java/clap/server/application/mapper/response/LogMapper.java index b5759cf4..a230dda2 100644 --- a/src/main/java/clap/server/application/mapper/response/LogMapper.java +++ b/src/main/java/clap/server/application/mapper/response/LogMapper.java @@ -14,7 +14,6 @@ public static AnonymousLogResponse toAnonymousLogResponse(AnonymousLog anonymous anonymousLog.getLoginNickname(), anonymousLog.getClientIp(), anonymousLog.getStatusCode(), - anonymousLog.getCustomStatusCode(), failedAttempts ); } diff --git a/src/main/java/clap/server/application/port/inbound/log/FindApiLogsUsecase.java b/src/main/java/clap/server/application/port/inbound/log/FindApiLogsUsecase.java index 35c7f644..34f11b6d 100644 --- a/src/main/java/clap/server/application/port/inbound/log/FindApiLogsUsecase.java +++ b/src/main/java/clap/server/application/port/inbound/log/FindApiLogsUsecase.java @@ -14,5 +14,4 @@ public interface FindApiLogsUsecase { PageResponse filterAnonymousLogs(FilterLogRequest anonymousLogsRequest, Pageable pageable); PageResponse filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable); - List getApiLogs(); } \ No newline at end of file diff --git a/src/main/java/clap/server/application/port/outbound/log/LoadLogPort.java b/src/main/java/clap/server/application/port/outbound/log/LoadLogPort.java index 4ee39ae2..a517ba4a 100644 --- a/src/main/java/clap/server/application/port/outbound/log/LoadLogPort.java +++ b/src/main/java/clap/server/application/port/outbound/log/LoadLogPort.java @@ -12,7 +12,6 @@ import java.util.List; public interface LoadLogPort { - List findAllLogs(); Page filterAnonymousLogs(FilterLogRequest anonymousLogRequest, Pageable pageable); Page filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable); diff --git a/src/main/java/clap/server/application/service/log/FindApiLogsService.java b/src/main/java/clap/server/application/service/log/FindApiLogsService.java index 0798c598..fc5fc1cc 100644 --- a/src/main/java/clap/server/application/service/log/FindApiLogsService.java +++ b/src/main/java/clap/server/application/service/log/FindApiLogsService.java @@ -25,7 +25,6 @@ @Transactional(readOnly = true) public class FindApiLogsService implements FindApiLogsUsecase { - private final ApiLogPersistenceAdapter apiLogPersistenceAdapter; private final LoginDomainService loginDomainService; private final LoadLogPort loadLogPort; @@ -45,10 +44,4 @@ public PageResponse filterMemberLogs(FilterLogRequest memberL Page memberLogResponses = memberLogs.map(LogMapper::toMemberLogResponse); return PageResponse.from(memberLogResponses); } - - //테스트용 - @Override - public List getApiLogs() { - return apiLogPersistenceAdapter.findAllLogs(); - } } From d1fbba1afd7de69c0b54d9a65dc99e62d3fd5c9d Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Sun, 2 Feb 2025 16:21:01 +0900 Subject: [PATCH 7/9] =?UTF-8?q?CLAP-196=20Fix:=20=EC=9A=94=EC=B2=AD=20?= =?UTF-8?q?=EC=8B=A4=ED=8C=A8=20=EC=8B=9C=20=EC=84=A4=EB=AA=85=20=EA=B5=AC?= =?UTF-8?q?=EC=B2=B4=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../port/inbound/log/CreateAnonymousLogsUsecase.java | 2 +- .../port/inbound/log/CreateMemberLogsUsecase.java | 2 +- .../application/service/log/CreateAnonymousLogsService.java | 4 ++-- .../application/service/log/CreateMemberLogsService.java | 4 ++-- src/main/java/clap/server/config/aop/LoggingAspect.java | 6 ++++-- .../java/clap/server/domain/model/log/AnonymousLog.java | 4 ++-- src/main/java/clap/server/domain/model/log/MemberLog.java | 6 +++--- 7 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/main/java/clap/server/application/port/inbound/log/CreateAnonymousLogsUsecase.java b/src/main/java/clap/server/application/port/inbound/log/CreateAnonymousLogsUsecase.java index 9c6eca65..342dc2ea 100644 --- a/src/main/java/clap/server/application/port/inbound/log/CreateAnonymousLogsUsecase.java +++ b/src/main/java/clap/server/application/port/inbound/log/CreateAnonymousLogsUsecase.java @@ -7,6 +7,6 @@ import java.time.LocalDateTime; public interface CreateAnonymousLogsUsecase { - void createAnonymousLog(HttpServletRequest request, int statusCode, LogStatus logStatus, Object responseBody, String requestBody, String nickName); + void createAnonymousLog(HttpServletRequest request, int statusCode, String customCode, LogStatus logStatus, Object responseBody, String requestBody, String nickName); } diff --git a/src/main/java/clap/server/application/port/inbound/log/CreateMemberLogsUsecase.java b/src/main/java/clap/server/application/port/inbound/log/CreateMemberLogsUsecase.java index 8b604cf1..756ae736 100644 --- a/src/main/java/clap/server/application/port/inbound/log/CreateMemberLogsUsecase.java +++ b/src/main/java/clap/server/application/port/inbound/log/CreateMemberLogsUsecase.java @@ -8,5 +8,5 @@ public interface CreateMemberLogsUsecase { - void createMemberLog(HttpServletRequest request, int statusCode, LogStatus logStatus, Object responseBody, String requestBody, Long userId); + void createMemberLog(HttpServletRequest request, int statusCode,String customCode, LogStatus logStatus, Object responseBody, String requestBody, Long userId); } diff --git a/src/main/java/clap/server/application/service/log/CreateAnonymousLogsService.java b/src/main/java/clap/server/application/service/log/CreateAnonymousLogsService.java index ad75a402..ff79d66e 100644 --- a/src/main/java/clap/server/application/service/log/CreateAnonymousLogsService.java +++ b/src/main/java/clap/server/application/service/log/CreateAnonymousLogsService.java @@ -18,8 +18,8 @@ public class CreateAnonymousLogsService implements CreateAnonymousLogsUsecase { private final ApiLogPersistenceAdapter apiLogPersistenceAdapter; @Override - public void createAnonymousLog(HttpServletRequest request, int statusCode, LogStatus logStatus, Object responseBody, String requestBody, String nickName) { - AnonymousLog anonymousLog = AnonymousLog.createAnonymousLog(request, statusCode, logStatus, responseBody, requestBody, nickName); + public void createAnonymousLog(HttpServletRequest request, int statusCode, String customCode, LogStatus logStatus, Object responseBody, String requestBody, String nickName) { + AnonymousLog anonymousLog = AnonymousLog.createAnonymousLog(request, statusCode,customCode, logStatus, responseBody, requestBody, nickName); apiLogPersistenceAdapter.saveAnonymousLog(anonymousLog); } } diff --git a/src/main/java/clap/server/application/service/log/CreateMemberLogsService.java b/src/main/java/clap/server/application/service/log/CreateMemberLogsService.java index 7724a1cd..690e24ea 100644 --- a/src/main/java/clap/server/application/service/log/CreateMemberLogsService.java +++ b/src/main/java/clap/server/application/service/log/CreateMemberLogsService.java @@ -23,9 +23,9 @@ public class CreateMemberLogsService implements CreateMemberLogsUsecase { @Override @Transactional - public void createMemberLog(HttpServletRequest request, int statusCode, LogStatus logStatus, Object responseBody, String requestBody, Long userId) { + public void createMemberLog(HttpServletRequest request, int statusCode, String customCode,LogStatus logStatus, Object responseBody, String requestBody, Long userId) { Member member = memberService.findById(userId); - MemberLog memberLog = MemberLog.createMemberLog(request, statusCode, logStatus, responseBody, requestBody, member); + MemberLog memberLog = MemberLog.createMemberLog(request, statusCode, customCode, logStatus, responseBody, requestBody, member); apiLogPersistenceAdapter.saveMemberLog(memberLog); } } diff --git a/src/main/java/clap/server/config/aop/LoggingAspect.java b/src/main/java/clap/server/config/aop/LoggingAspect.java index 7e792858..8c9a47b7 100644 --- a/src/main/java/clap/server/config/aop/LoggingAspect.java +++ b/src/main/java/clap/server/config/aop/LoggingAspect.java @@ -62,9 +62,11 @@ public Object logApiRequests(ProceedingJoinPoint joinPoint) throws Throwable { } finally { LogStatus logStatus = getLogType((MethodSignature) joinPoint.getSignature()); int statusCode; + String customCode = null; if (capturedException != null) { if (capturedException instanceof BaseException e) { statusCode = e.getCode().getHttpStatus().value(); + customCode = e.getCode().getCustomCode(); } else { ModelAndView modelAndView = handlerExceptionResolver.resolveException(request, response, null, capturedException); statusCode = modelAndView.getStatus().value(); @@ -75,14 +77,14 @@ public Object logApiRequests(ProceedingJoinPoint joinPoint) throws Throwable { if (logStatus != null) { if (LogStatus.LOGIN.equals(logStatus)) { - createAnonymousLogsUsecase.createAnonymousLog(request, statusCode, logStatus, result, getRequestBody(request), getNicknameFromRequestBody(request)); + createAnonymousLogsUsecase.createAnonymousLog(request, statusCode, customCode, logStatus, result, getRequestBody(request), getNicknameFromRequestBody(request)); } else { if (!isUserAuthenticated()) { log.error("로그인 시도 로그를 기록할 수 없음"); } else { Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if (principal instanceof SecurityUserDetails userDetails) { - createMemberLogsUsecase.createMemberLog(request, statusCode, logStatus, result, getRequestBody(request), userDetails.getUserId()); + createMemberLogsUsecase.createMemberLog(request, statusCode, customCode, logStatus, result, getRequestBody(request), userDetails.getUserId()); } } } diff --git a/src/main/java/clap/server/domain/model/log/AnonymousLog.java b/src/main/java/clap/server/domain/model/log/AnonymousLog.java index 282a7947..06f56b95 100644 --- a/src/main/java/clap/server/domain/model/log/AnonymousLog.java +++ b/src/main/java/clap/server/domain/model/log/AnonymousLog.java @@ -16,13 +16,13 @@ public class AnonymousLog extends ApiLog { private String loginNickname; - public static AnonymousLog createAnonymousLog(HttpServletRequest request, int statusCode, LogStatus logStatus, Object responseBody, String requestBody, String nickName) { + public static AnonymousLog createAnonymousLog(HttpServletRequest request, int statusCode, String customCode, LogStatus logStatus, Object responseBody, String requestBody, String nickName) { return AnonymousLog.builder() .clientIp(ClientIpParseUtil.getClientIp(request)) .requestUrl(request.getRequestURI()) .requestMethod(request.getMethod()) .statusCode(statusCode) - .customStatusCode("") + .customStatusCode(customCode != null ? customCode : "") .requestBody(requestBody) .responseBody(responseBody != null ? responseBody.toString() : "로그인 실패") .requestAt(LocalDateTime.now()) diff --git a/src/main/java/clap/server/domain/model/log/MemberLog.java b/src/main/java/clap/server/domain/model/log/MemberLog.java index 69896cf1..933b753e 100644 --- a/src/main/java/clap/server/domain/model/log/MemberLog.java +++ b/src/main/java/clap/server/domain/model/log/MemberLog.java @@ -17,15 +17,15 @@ public class MemberLog extends ApiLog { private Member member; - public static MemberLog createMemberLog(HttpServletRequest request, int statusCode, LogStatus logStatus, Object responseBody, String requestBody, Member member) { + public static MemberLog createMemberLog(HttpServletRequest request, int statusCode, String customCode, LogStatus logStatus, Object responseBody, String requestBody, Member member) { return MemberLog.builder() .clientIp(ClientIpParseUtil.getClientIp(request)) .requestUrl(request.getRequestURI()) .requestMethod(request.getMethod()) .statusCode(statusCode) - .customStatusCode("") + .customStatusCode(customCode != null ? customCode : "") .requestBody(requestBody) - .responseBody(responseBody != null ? responseBody.toString() : "일반 실패") + .responseBody(responseBody != null ? responseBody.toString() : logStatus.getDescription() + " 실패") .requestAt(LocalDateTime.now()) .logStatus(logStatus) .member(member) From b495ceb26d61e75d5251c745e468e6607779d333 Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Sun, 2 Feb 2025 16:37:16 +0900 Subject: [PATCH 8/9] =?UTF-8?q?CLAP-196=20Add:=20=EC=A0=9C=EC=95=BD=20?= =?UTF-8?q?=EC=A1=B0=EA=B1=B4=20=EC=88=98=EC=A0=95=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/ApiLogPersistenceMapper.java | 15 --------------- ...95__Modify_Custom_Status_Code_From_Api_Log.sql | 2 ++ ...0250202196__Modify_Log_Status_From_Api_Log.sql | 4 ++++ 3 files changed, 6 insertions(+), 15 deletions(-) create mode 100644 src/main/resources/db/migration/dev/V20250202195__Modify_Custom_Status_Code_From_Api_Log.sql create mode 100644 src/main/resources/db/migration/dev/V20250202196__Modify_Log_Status_From_Api_Log.sql diff --git a/src/main/java/clap/server/adapter/outbound/persistense/mapper/ApiLogPersistenceMapper.java b/src/main/java/clap/server/adapter/outbound/persistense/mapper/ApiLogPersistenceMapper.java index 1b986eb1..573ac8d8 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/mapper/ApiLogPersistenceMapper.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/mapper/ApiLogPersistenceMapper.java @@ -78,19 +78,4 @@ public MemberLog mapMemberLogEntityToDomain(MemberLogEntity memberLogEntity) { : null) .build(); } - - public ApiLog mapLogEntityToDomain(ApiLogEntity logEntity) { - return ApiLog.builder() - .logId(logEntity.getLogId()) - .clientIp(logEntity.getClientIp()) - .requestUrl(logEntity.getRequestUrl()) - .requestMethod(logEntity.getRequestMethod().name()) - .statusCode(logEntity.getStatusCode()) - .customStatusCode(logEntity.getCustomStatusCode()) - .requestBody(logEntity.getRequestBody()) - .responseBody(logEntity.getResponseBody()) - .requestAt(logEntity.getRequestAt()) - .logStatus(logEntity.getLogStatus()) - .build(); - } } diff --git a/src/main/resources/db/migration/dev/V20250202195__Modify_Custom_Status_Code_From_Api_Log.sql b/src/main/resources/db/migration/dev/V20250202195__Modify_Custom_Status_Code_From_Api_Log.sql new file mode 100644 index 00000000..1e4167a2 --- /dev/null +++ b/src/main/resources/db/migration/dev/V20250202195__Modify_Custom_Status_Code_From_Api_Log.sql @@ -0,0 +1,2 @@ +ALTER TABLE api_log + MODIFY COLUMN custom_status_code VARCHAR(255) NULL; \ No newline at end of file diff --git a/src/main/resources/db/migration/dev/V20250202196__Modify_Log_Status_From_Api_Log.sql b/src/main/resources/db/migration/dev/V20250202196__Modify_Log_Status_From_Api_Log.sql new file mode 100644 index 00000000..b9b69e64 --- /dev/null +++ b/src/main/resources/db/migration/dev/V20250202196__Modify_Log_Status_From_Api_Log.sql @@ -0,0 +1,4 @@ +ALTER TABLE api_log + MODIFY COLUMN log_status ENUM('LOGIN', 'REQUEST_CREATED', 'REQUEST_UPDATED', 'REQUEST_CANCELLED', + 'REQUEST_APPROVED', 'ASSIGNER_CHANGED', 'COMMENT_ADDED', + 'COMMENT_UPDATED', 'STATUS_CHANGED', 'TASK_VIEWED') NOT NULL; \ No newline at end of file From aefe00c4050f6985f0bd979761efb85deacc42dc Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Sun, 2 Feb 2025 20:45:21 +0900 Subject: [PATCH 9/9] =?UTF-8?q?CLAP-196=20Fix:=20flyway=20=EC=8A=A4?= =?UTF-8?q?=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EB=B3=91=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V20250202195__Modify_Custom_Status_Code_From_Api_Log.sql | 2 -- ...__Modify_Custom_Status_Code_And_Log_Status_From_Api_Log.sql} | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 src/main/resources/db/migration/dev/V20250202195__Modify_Custom_Status_Code_From_Api_Log.sql rename src/main/resources/db/migration/dev/{V20250202196__Modify_Log_Status_From_Api_Log.sql => V20250202196__Modify_Custom_Status_Code_And_Log_Status_From_Api_Log.sql} (81%) diff --git a/src/main/resources/db/migration/dev/V20250202195__Modify_Custom_Status_Code_From_Api_Log.sql b/src/main/resources/db/migration/dev/V20250202195__Modify_Custom_Status_Code_From_Api_Log.sql deleted file mode 100644 index 1e4167a2..00000000 --- a/src/main/resources/db/migration/dev/V20250202195__Modify_Custom_Status_Code_From_Api_Log.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE api_log - MODIFY COLUMN custom_status_code VARCHAR(255) NULL; \ No newline at end of file diff --git a/src/main/resources/db/migration/dev/V20250202196__Modify_Log_Status_From_Api_Log.sql b/src/main/resources/db/migration/dev/V20250202196__Modify_Custom_Status_Code_And_Log_Status_From_Api_Log.sql similarity index 81% rename from src/main/resources/db/migration/dev/V20250202196__Modify_Log_Status_From_Api_Log.sql rename to src/main/resources/db/migration/dev/V20250202196__Modify_Custom_Status_Code_And_Log_Status_From_Api_Log.sql index b9b69e64..b69f2e67 100644 --- a/src/main/resources/db/migration/dev/V20250202196__Modify_Log_Status_From_Api_Log.sql +++ b/src/main/resources/db/migration/dev/V20250202196__Modify_Custom_Status_Code_And_Log_Status_From_Api_Log.sql @@ -1,4 +1,5 @@ ALTER TABLE api_log + MODIFY COLUMN custom_status_code VARCHAR(255) NULL, MODIFY COLUMN log_status ENUM('LOGIN', 'REQUEST_CREATED', 'REQUEST_UPDATED', 'REQUEST_CANCELLED', 'REQUEST_APPROVED', 'ASSIGNER_CHANGED', 'COMMENT_ADDED', 'COMMENT_UPDATED', 'STATUS_CHANGED', 'TASK_VIEWED') NOT NULL; \ No newline at end of file