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/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/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/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/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/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/CreateAnonymousLogsUsecase.java b/src/main/java/clap/server/application/port/inbound/log/CreateAnonymousLogsUsecase.java index e21c6f5c..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, HttpServletResponse response, Object result, LogStatus logType, String customCode, String requestBody, String nicknameFromRequestBody); + 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 b6870930..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, HttpServletResponse response, Object result, LogStatus logType, String customCode, String body, 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/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/CreateAnonymousLogsService.java b/src/main/java/clap/server/application/service/log/CreateAnonymousLogsService.java index f2152d64..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, 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, 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 9026e8f5..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, HttpServletResponse response, Object result, LogStatus logType, String customCode, String body, 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, response, result, logType, customCode, body, member); + MemberLog memberLog = MemberLog.createMemberLog(request, statusCode, customCode, logStatus, responseBody, requestBody, member); apiLogPersistenceAdapter.saveMemberLog(memberLog); } } 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(); - } } 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..f4f50619 --- /dev/null +++ b/src/main/java/clap/server/config/aop/ContentCachingFilter.java @@ -0,0 +1,21 @@ +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 { + ContentCachingRequestWrapper contentCachingRequestWrapper = new ContentCachingRequestWrapper(request); + filterChain.doFilter(contentCachingRequestWrapper, response); + } +} \ 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..8c9a47b7 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,15 +19,18 @@ 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; import java.nio.charset.StandardCharsets; -import java.time.LocalDateTime; @Slf4j @Aspect @@ -36,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() { @@ -45,37 +50,41 @@ 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; + Exception capturedException = null; try { result = joinPoint.proceed(); } catch (Exception ex) { - log.error("Exception occurred: {}", ex.getMessage()); - log.info("response.getStatus()={}",response.getStatus()); - log.info("getRequestBody()={}", getRequestBody(request)); + 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)) { - 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)); + 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(); + } + } else { + statusCode = response.getStatus(); + } + + if (logStatus != null) { + if (LogStatus.LOGIN.equals(logStatus)) { + 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, response, result, logType, customCode, getRequestBody(request), userDetails.getUserId()); + createMemberLogsUsecase.createMemberLog(request, statusCode, customCode, logStatus, result, getRequestBody(request), userDetails.getUserId()); } } } @@ -92,13 +101,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); - } - - //TODO: 로그인 시도 시 닉네임 파싱하도록 수정 private String getNicknameFromRequestBody(HttpServletRequest request) { try { String requestBody = getRequestBody(request); @@ -109,14 +111,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/AnonymousLog.java b/src/main/java/clap/server/domain/model/log/AnonymousLog.java index c0324740..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,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, String customCode, 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(customCode != null ? customCode : "") .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 566887d9..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, HttpServletResponse response, Object responseResult, LogStatus logStatus, String customCode, 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(response.getStatus()) - .customStatusCode(customCode) + .statusCode(statusCode) + .customStatusCode(customCode != null ? customCode : "") .requestBody(requestBody) - .responseBody(responseResult != null ? responseResult.toString() : "UNKNOWN") + .responseBody(responseBody != null ? responseBody.toString() : logStatus.getDescription() + " 실패") .requestAt(LocalDateTime.now()) .logStatus(logStatus) .member(member) diff --git a/src/main/resources/db/migration/dev/V20250202196__Modify_Custom_Status_Code_And_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 new file mode 100644 index 00000000..b69f2e67 --- /dev/null +++ b/src/main/resources/db/migration/dev/V20250202196__Modify_Custom_Status_Code_And_Log_Status_From_Api_Log.sql @@ -0,0 +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