diff --git a/src/main/java/com/mey/backend/domain/auth/dto/LoginRequest.java b/src/main/java/com/mey/backend/domain/auth/dto/LoginRequest.java index 0b9778a..b024604 100644 --- a/src/main/java/com/mey/backend/domain/auth/dto/LoginRequest.java +++ b/src/main/java/com/mey/backend/domain/auth/dto/LoginRequest.java @@ -3,9 +3,11 @@ import jakarta.validation.constraints.NotBlank; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.ToString; @Getter @NoArgsConstructor +@ToString(exclude = {"password", "email"}) public class LoginRequest { @NotBlank(message = "이메일은 필수입니다") diff --git a/src/main/java/com/mey/backend/domain/auth/dto/SignupRequest.java b/src/main/java/com/mey/backend/domain/auth/dto/SignupRequest.java index f8b1d77..3225b36 100644 --- a/src/main/java/com/mey/backend/domain/auth/dto/SignupRequest.java +++ b/src/main/java/com/mey/backend/domain/auth/dto/SignupRequest.java @@ -5,9 +5,11 @@ import jakarta.validation.constraints.Size; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.ToString; @Getter @NoArgsConstructor +@ToString(exclude = {"password", "email"}) public class SignupRequest { @NotBlank(message = "닉네임은 필수입니다") diff --git a/src/main/java/com/mey/backend/domain/chatbot/controller/ChatController.java b/src/main/java/com/mey/backend/domain/chatbot/controller/ChatController.java index 90e4259..b9e8503 100644 --- a/src/main/java/com/mey/backend/domain/chatbot/controller/ChatController.java +++ b/src/main/java/com/mey/backend/domain/chatbot/controller/ChatController.java @@ -32,7 +32,7 @@ public class ChatController { ) @PostMapping("/query") public CommonResponse sendMessage(@RequestBody ChatRequest request) { - log.info("chat request: {}", request.getQuery()); + log.info("챗봇 요청 처리 시작"); try { ChatResponse response = chatService.processUserQuery(request); diff --git a/src/main/java/com/mey/backend/domain/chatbot/dto/ChatRequest.java b/src/main/java/com/mey/backend/domain/chatbot/dto/ChatRequest.java index c4f3c41..506cf80 100644 --- a/src/main/java/com/mey/backend/domain/chatbot/dto/ChatRequest.java +++ b/src/main/java/com/mey/backend/domain/chatbot/dto/ChatRequest.java @@ -6,12 +6,14 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.ToString; @Schema(description = "채팅 요청 DTO") @Getter @Builder(toBuilder = true) @NoArgsConstructor @AllArgsConstructor +@ToString(exclude = {"query"}) public class ChatRequest { @Schema(description = "사용자 질문", example = "k-pop 루트 추천해줘") @NotBlank diff --git a/src/main/java/com/mey/backend/domain/chatbot/repository/InMemoryDocumentVectorStore.java b/src/main/java/com/mey/backend/domain/chatbot/repository/InMemoryDocumentVectorStore.java index 7971ec6..bb6530e 100644 --- a/src/main/java/com/mey/backend/domain/chatbot/repository/InMemoryDocumentVectorStore.java +++ b/src/main/java/com/mey/backend/domain/chatbot/repository/InMemoryDocumentVectorStore.java @@ -117,7 +117,7 @@ public void addDocumentFile(String id, File file, Map metadata) * @return 유사도 순으로 정렬된 검색 결과 목록 */ public List similaritySearch(String query, int maxResults) { - log.debug("유사도 검색 시작 - 질의: '{}', 최대 결과: {}", query, maxResults); + log.debug("유사도 검색 시작 - 최대 결과: {}", maxResults); try { // 검색 요청 구성 @@ -139,7 +139,7 @@ public List similaritySearch(String query, int maxResults) .map(this::mapToSearchResult) .collect(Collectors.toList()); } catch (Exception e) { - log.error("유사도 검색 실패 - 질의: '{}'", query, e); + log.error("유사도 검색 실패", e); throw new SimilarityProcessingException(); } } diff --git a/src/main/java/com/mey/backend/domain/chatbot/service/ChatService.java b/src/main/java/com/mey/backend/domain/chatbot/service/ChatService.java index 73c8776..5027eed 100644 --- a/src/main/java/com/mey/backend/domain/chatbot/service/ChatService.java +++ b/src/main/java/com/mey/backend/domain/chatbot/service/ChatService.java @@ -88,7 +88,7 @@ public void initializeVectorStore() { * 상태 기반 대화 처리를 지원하며, 세션 연속성을 보장합니다. */ public ChatResponse processUserQuery(ChatRequest request) { - log.info("Processing user query: {} (language: {})", request.getQuery(), request.getLanguage()); + log.info("사용자 쿼리 처리 시작 (언어: {})", request.getLanguage()); // 1. 언어 검증 및 설정 String validatedLanguage = languageService.validateAndGetLanguage(request.getLanguage()); diff --git a/src/main/java/com/mey/backend/domain/chatbot/service/ContextExtractor.java b/src/main/java/com/mey/backend/domain/chatbot/service/ContextExtractor.java index 34bcd23..0c2b203 100644 --- a/src/main/java/com/mey/backend/domain/chatbot/service/ContextExtractor.java +++ b/src/main/java/com/mey/backend/domain/chatbot/service/ContextExtractor.java @@ -228,7 +228,7 @@ private ChatContext mergeContexts(ChatContext existingContext, ChatContext extra * AI 파싱 실패 시 fallback 로직 */ private ChatContext extractContextFallback(String query, ChatContext existingContext) { - log.info("Using fallback context extraction for query: {}", query); + log.info("fallback context extraction 사용"); ChatContext.ChatContextBuilder builder = existingContext != null ? existingContext.toBuilder() : ChatContext.builder(); diff --git a/src/main/java/com/mey/backend/domain/place/service/PlaceTourApiClient.java b/src/main/java/com/mey/backend/domain/place/service/PlaceTourApiClient.java index e1dee30..46ab3ee 100644 --- a/src/main/java/com/mey/backend/domain/place/service/PlaceTourApiClient.java +++ b/src/main/java/com/mey/backend/domain/place/service/PlaceTourApiClient.java @@ -98,7 +98,7 @@ public List fetchRelatedPlaces(double latitude, double longi JsonNode items = om.readTree(body).at("/response/body/items/item"); if (items.isArray()) { - log.info("📍 locationBasedList2 {}건 lat={}, lon={}", items.size(), latitude, longitude); + log.info("📍 locationBasedList2 {}건 조회됨", items.size()); for (JsonNode it : items) { String address = it.path("addr1").asText(""); @@ -115,12 +115,12 @@ public List fetchRelatedPlaces(double latitude, double longi )); } } else { - log.warn("⚠️ locationBasedList2 결과 없음 lat={}, lon={}", latitude, longitude); + log.warn("⚠️ locationBasedList2 결과 없음"); } return out; } catch (Exception e) { - log.error("❌ locationBasedList2 호출 실패 lat={}, lon={}", latitude, longitude, e); + log.error("❌ locationBasedList2 호출 실패", e); } return List.of(); } diff --git a/src/main/java/com/mey/backend/domain/user/dto/UserInfoResponse.java b/src/main/java/com/mey/backend/domain/user/dto/UserInfoResponse.java index e4a0a24..e6affb0 100644 --- a/src/main/java/com/mey/backend/domain/user/dto/UserInfoResponse.java +++ b/src/main/java/com/mey/backend/domain/user/dto/UserInfoResponse.java @@ -4,9 +4,11 @@ import com.mey.backend.domain.user.entity.User; import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.ToString; @Getter @AllArgsConstructor +@ToString(exclude = {"email"}) public class UserInfoResponse { private Long id; private String nickname; diff --git a/src/main/java/com/mey/backend/domain/user/dto/UserInfoUpdateRequest.java b/src/main/java/com/mey/backend/domain/user/dto/UserInfoUpdateRequest.java index 34ecd75..617da97 100644 --- a/src/main/java/com/mey/backend/domain/user/dto/UserInfoUpdateRequest.java +++ b/src/main/java/com/mey/backend/domain/user/dto/UserInfoUpdateRequest.java @@ -3,9 +3,11 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.ToString; @Getter @NoArgsConstructor +@ToString(exclude = {"password", "email"}) @Schema(description = "사용자 정보 수정 요청") public class UserInfoUpdateRequest { diff --git a/src/main/java/com/mey/backend/domain/user/entity/User.java b/src/main/java/com/mey/backend/domain/user/entity/User.java index ec54aef..b351a1d 100644 --- a/src/main/java/com/mey/backend/domain/user/entity/User.java +++ b/src/main/java/com/mey/backend/domain/user/entity/User.java @@ -14,6 +14,7 @@ @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) +@ToString(exclude = {"password", "email"}) public class User implements UserDetails { @Id diff --git a/src/main/java/com/mey/backend/domain/user/service/UserDetailsServiceImpl.java b/src/main/java/com/mey/backend/domain/user/service/UserDetailsServiceImpl.java index db3acc0..16ce40a 100644 --- a/src/main/java/com/mey/backend/domain/user/service/UserDetailsServiceImpl.java +++ b/src/main/java/com/mey/backend/domain/user/service/UserDetailsServiceImpl.java @@ -16,6 +16,6 @@ public class UserDetailsServiceImpl implements UserDetailsService { @Override public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException { return userRepository.findByEmail(email) - .orElseThrow(() -> new UsernameNotFoundException("User not found: " + email)); + .orElseThrow(() -> new UsernameNotFoundException("User not found")); } } \ No newline at end of file diff --git a/src/main/java/com/mey/backend/global/exception/GlobalExceptionHandler.java b/src/main/java/com/mey/backend/global/exception/GlobalExceptionHandler.java index 70880f9..066528b 100644 --- a/src/main/java/com/mey/backend/global/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/mey/backend/global/exception/GlobalExceptionHandler.java @@ -86,7 +86,7 @@ public ResponseEntity handleGeneral(GeneralException generalException, H public ResponseEntity handleOthers(Exception e, WebRequest request) { CommonResponse body = CommonResponse.onFailure(ErrorStatus.INTERNAL_SERVER_ERROR.getCode(), ErrorStatus.INTERNAL_SERVER_ERROR.getMessage(), - e.getMessage()); + null); return super.handleExceptionInternal(e, body, HttpHeaders.EMPTY, ErrorStatus.INTERNAL_SERVER_ERROR.getHttpStatus(), request); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index f599207..99dd836 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -24,7 +24,10 @@ spring: logging: level: - com.mey.backend: DEBUG - org.springframework.web: DEBUG + com.mey.backend: INFO + org.springframework.web: WARN + org.springframework.security: WARN org.hibernate.tool.schema.internal: warn org.hibernate.sql: warn + org.springframework.web.servlet.DispatcherServlet: ERROR + org.springframework.security.web.FilterChainProxy: ERROR diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 8337ae1..1c9ffa4 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -19,5 +19,11 @@ spring: logging: level: - com.mey.backend: INFO - org.springframework.web: WARN + com.mey.backend: WARN + org.springframework.web: ERROR + org.springframework.security: ERROR + org.hibernate.sql: ERROR + org.springframework.web.servlet.DispatcherServlet: ERROR + org.springframework.security.web.FilterChainProxy: ERROR + org.springframework.boot.autoconfigure: ERROR + root: WARN