diff --git a/src/main/java/com/sofa/linkiving/domain/chat/ai/MockAnswerClient.java b/src/main/java/com/sofa/linkiving/domain/chat/ai/MockAnswerClient.java index 6b27dc0c..9d60735d 100644 --- a/src/main/java/com/sofa/linkiving/domain/chat/ai/MockAnswerClient.java +++ b/src/main/java/com/sofa/linkiving/domain/chat/ai/MockAnswerClient.java @@ -8,18 +8,12 @@ import com.sofa.linkiving.domain.chat.dto.request.RagAnswerReq; import com.sofa.linkiving.domain.chat.dto.response.RagAnswerRes; -import lombok.extern.slf4j.Slf4j; - -@Slf4j @Component @Profile("test") public class MockAnswerClient implements AnswerClient { @Override public RagAnswerRes generateAnswer(RagAnswerReq request) { - log.info("[Mock AI Request] User: {}, Question: {}, Mode: {}, HistoryCnt: {}", - request.userId(), request.question(), request.mode(), request.history().size()); - return new RagAnswerRes( "임시 답변", List.of("3", "4"), diff --git a/src/main/java/com/sofa/linkiving/domain/chat/facade/ChatFacade.java b/src/main/java/com/sofa/linkiving/domain/chat/facade/ChatFacade.java index d95b4a1c..ea81a5da 100644 --- a/src/main/java/com/sofa/linkiving/domain/chat/facade/ChatFacade.java +++ b/src/main/java/com/sofa/linkiving/domain/chat/facade/ChatFacade.java @@ -78,9 +78,9 @@ public void generateAnswer(Long chatId, Member member, String message) { if (task.isCancelled() || ex != null) { if (ex != null) { - log.error("AI 답변 생성 중 오류 발생 - chatId: {}, error: {}", chatId, ex.getMessage(), ex); + log.error("AI 답변 생성 중 오류 발생 - chatId={}", chatId, ex); } else { - log.info("AI 답변 생성 작업 취소됨 - chatId: {}", chatId); + log.info("AI 답변 생성 작업 취소됨 - chatId={}", chatId); } sendNotification(chatId, member, AnswerRes.error(chatId, message)); @@ -92,7 +92,7 @@ public void generateAnswer(Long chatId, Member member, String message) { return; } - log.error("AI 답변 생성 결과가 null 입니다 - chatId: {}", chatId); + log.error("AI 답변 생성 결과가 null 입니다 - chatId={}", chatId); sendNotification(chatId, member, AnswerRes.error(chatId, message)); }); } diff --git a/src/main/java/com/sofa/linkiving/domain/link/event/SummaryStatusEventListener.java b/src/main/java/com/sofa/linkiving/domain/link/event/SummaryStatusEventListener.java index 5606d120..dc55ac74 100644 --- a/src/main/java/com/sofa/linkiving/domain/link/event/SummaryStatusEventListener.java +++ b/src/main/java/com/sofa/linkiving/domain/link/event/SummaryStatusEventListener.java @@ -22,7 +22,8 @@ public void handleSummaryStatusEvent(SummaryStatusEvent event) { "/queue/summary", event.response() ); - log.info("요약 상태 웹소켓 푸시 완료 - 이메일: {}, 상태: {}, 링크ID: {}", - event.email(), event.response().status(), event.response().linkId()); + + log.debug("요약 상태 웹소켓 푸시 완료 - status={}, linkId={}", + event.response().status(), event.response().linkId()); } } diff --git a/src/main/java/com/sofa/linkiving/domain/link/service/LinkService.java b/src/main/java/com/sofa/linkiving/domain/link/service/LinkService.java index 5aa41503..fb34edba 100644 --- a/src/main/java/com/sofa/linkiving/domain/link/service/LinkService.java +++ b/src/main/java/com/sofa/linkiving/domain/link/service/LinkService.java @@ -29,7 +29,7 @@ public Link createLink(Member member, String url, String title, String memo, Str } Link link = linkCommandService.saveLink(member, url, title, memo, imageUrl); - log.info("Link created - id: {}, memberId: {}, url: {}", link.getId(), member.getId(), url); + log.info("Link created - id={}, memberId={}", link.getId(), member.getId()); return link; } @@ -38,7 +38,7 @@ public Link updateLink(Long linkId, Member member, String title, String memo, St Link link = linkQueryService.findById(linkId, member); Link updatedLink = linkCommandService.updateLink(link, title, memo, imageUrl); - log.info("Link updated - id: {}, memberId: {}", linkId, member.getId()); + log.debug("Link updated - id={}, memberId={}", linkId, member.getId()); return updatedLink; } @@ -47,7 +47,7 @@ public Link updateTitle(Long linkId, Member member, String title) { Link link = linkQueryService.findById(linkId, member); Link updatedLink = linkCommandService.updateLink(link, title, link.getMemo(), link.getImageUrl()); - log.info("Link title updated - id: {}, memberId: {}", linkId, member.getId()); + log.debug("Link title updated - id={}, memberId={}", linkId, member.getId()); return updatedLink; } @@ -56,7 +56,7 @@ public Link updateMemo(Long linkId, Member member, String memo) { Link link = linkQueryService.findById(linkId, member); Link updatedLink = linkCommandService.updateLink(link, link.getTitle(), memo, link.getImageUrl()); - log.info("Link memo updated - id: {}, memberId: {}", linkId, member.getId()); + log.debug("Link memo updated - id={}, memberId={}", linkId, member.getId()); return updatedLink; } @@ -65,7 +65,7 @@ public void deleteLink(Long linkId, Member member) { Link link = linkQueryService.findById(linkId, member); linkCommandService.deleteLink(link); - log.info("Link soft deleted - id: {}, memberId: {}", linkId, member.getId()); + log.info("Link soft deleted - id={}, memberId={}", linkId, member.getId()); } public Link getLink(Long linkId) { diff --git a/src/main/java/com/sofa/linkiving/domain/link/util/OgTagCrawler.java b/src/main/java/com/sofa/linkiving/domain/link/util/OgTagCrawler.java index 474521c1..96f24c85 100644 --- a/src/main/java/com/sofa/linkiving/domain/link/util/OgTagCrawler.java +++ b/src/main/java/com/sofa/linkiving/domain/link/util/OgTagCrawler.java @@ -22,7 +22,6 @@ public OgTagCrawler(UrlValidator urlValidator) { } public OgTagDto crawl(String url) { - // SSRF 방어: URL 안전성 검증 urlValidator.validateSafeUrl(url); try { @@ -39,7 +38,7 @@ public OgTagDto crawl(String url) { .build(); } catch (IOException e) { - log.warn("OG 태그 크롤링 실패: {}", url, e); + log.warn("OG 태그 크롤링 실패 - url={}, reason={}", url, e.getMessage()); return OgTagDto.EMPTY; } } diff --git a/src/main/java/com/sofa/linkiving/domain/link/worker/SummaryQueue.java b/src/main/java/com/sofa/linkiving/domain/link/worker/SummaryQueue.java index 510bf396..bd78dfd1 100644 --- a/src/main/java/com/sofa/linkiving/domain/link/worker/SummaryQueue.java +++ b/src/main/java/com/sofa/linkiving/domain/link/worker/SummaryQueue.java @@ -19,7 +19,7 @@ public class SummaryQueue { */ public void addToQueue(Long linkId) { summaryQueue.offer(linkId); - log.info("Link added to summary queue - linkId: {}", linkId); + log.debug("Link added to summary queue - linkId={}", linkId); } /** diff --git a/src/main/java/com/sofa/linkiving/infra/s3/S3ImageUploader.java b/src/main/java/com/sofa/linkiving/infra/s3/S3ImageUploader.java index d49b4c5b..526208a2 100644 --- a/src/main/java/com/sofa/linkiving/infra/s3/S3ImageUploader.java +++ b/src/main/java/com/sofa/linkiving/infra/s3/S3ImageUploader.java @@ -80,7 +80,8 @@ private String uploadNewImage(String originalUrl) { log.warn("Invalid image URL skipping upload: {}", originalUrl); return normalizedDefaultImageUrl(); } catch (Exception e) { - log.error("S3 upload failed for URL: {}", originalUrl, e); + log.warn("S3 upload failed, fallback to default image - url={}, reason={}", + originalUrl, e.getMessage()); return normalizedDefaultImageUrl(); } } @@ -92,7 +93,7 @@ public Optional resolveStoredUrl(String originalUrl) { try { String s3Key = generateUniqueKeyFromUrl(originalUrl); if (s3Template.objectExists(bucketName, s3Key)) { - log.info("Image already exists (Cache Hit): {} -> {}", originalUrl, s3Key); + log.debug("Image cache hit - s3Key={}", s3Key); return Optional.of(buildS3Url(s3Key)); } } catch (Exception e) { diff --git a/src/main/java/com/sofa/linkiving/security/auth/handler/OAuth2FailureHandler.java b/src/main/java/com/sofa/linkiving/security/auth/handler/OAuth2FailureHandler.java index ba77ecd6..5d7ce426 100644 --- a/src/main/java/com/sofa/linkiving/security/auth/handler/OAuth2FailureHandler.java +++ b/src/main/java/com/sofa/linkiving/security/auth/handler/OAuth2FailureHandler.java @@ -17,7 +17,9 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +@Slf4j @Component @RequiredArgsConstructor public class OAuth2FailureHandler extends SimpleUrlAuthenticationFailureHandler { @@ -39,6 +41,10 @@ public void onAuthenticationFailure(HttpServletRequest request, HttpServletRespo errorCode = determineAuthErrorCode(error.getErrorCode()); } + if (errorCode.getStatus().is5xxServerError()) { + log.warn("OAuth 로그인 실패(서버성 오류) - code={}", errorCode.getCode()); + } + String targetUrl = UriComponentsBuilder.fromUriString(oauth2Properties.failureRedirectUrl()) .queryParam("code", errorCode.getCode()) .build().toUriString(); diff --git a/src/main/java/com/sofa/linkiving/security/jwt/JwtTokenProvider.java b/src/main/java/com/sofa/linkiving/security/jwt/JwtTokenProvider.java index 68daff6d..0d109775 100644 --- a/src/main/java/com/sofa/linkiving/security/jwt/JwtTokenProvider.java +++ b/src/main/java/com/sofa/linkiving/security/jwt/JwtTokenProvider.java @@ -110,7 +110,6 @@ public String resolveToken(HttpServletRequest request) { return cookie.getValue(); } - log.warn("Token not found (missing in both header and cookie)"); return null; } diff --git a/src/main/java/com/sofa/linkiving/security/jwt/error/JwtErrorCode.java b/src/main/java/com/sofa/linkiving/security/jwt/error/JwtErrorCode.java index e97bd884..b33ac0fc 100644 --- a/src/main/java/com/sofa/linkiving/security/jwt/error/JwtErrorCode.java +++ b/src/main/java/com/sofa/linkiving/security/jwt/error/JwtErrorCode.java @@ -16,7 +16,7 @@ public enum JwtErrorCode implements ErrorCode { UNSUPPORTED_JWT_TOKEN(HttpStatus.UNAUTHORIZED, "J-002", "지원하지 않는 JWT 토큰입니다."), EMPTY_TOKEN(HttpStatus.UNAUTHORIZED, "J-003", "토큰이 필요합니다."), CANNOT_REFRESH(HttpStatus.UNAUTHORIZED, "J-004", "토큰을 갱신할 수 없습니다."), - INVALID_REFRESH(HttpStatus.BAD_REQUEST, "J-004", "refresh 토큰이 아닙니다."); + INVALID_REFRESH(HttpStatus.BAD_REQUEST, "J-005", "refresh 토큰이 아닙니다."); private final HttpStatus status; private final String code;