Skip to content

Commit 83cc6d0

Browse files
authored
Merge pull request #201 from GoTogether-Inc/feature/#200
[feature] 외부 API 로깅 추가
2 parents 405ebff + 7144fd4 commit 83cc6d0

5 files changed

Lines changed: 47 additions & 11 deletions

File tree

src/main/java/com/gotogether/domain/reservationemail/service/EmailServiceImpl.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,31 @@
44
import org.springframework.mail.javamail.JavaMailSender;
55
import org.springframework.stereotype.Service;
66

7+
import com.gotogether.global.apipayload.code.status.ErrorStatus;
8+
import com.gotogether.global.apipayload.exception.GeneralException;
9+
710
import lombok.RequiredArgsConstructor;
11+
import lombok.extern.slf4j.Slf4j;
812

913
@Service
14+
@Slf4j
1015
@RequiredArgsConstructor
1116
public class EmailServiceImpl implements EmailService {
1217
private final JavaMailSender mailSender;
1318

1419
@Override
1520
public void sendEmail(String[] recipients, String subject, String content) {
16-
SimpleMailMessage message = new SimpleMailMessage();
17-
message.setTo(recipients);
18-
message.setSubject(subject);
19-
message.setText(content);
20-
mailSender.send(message);
21+
try {
22+
SimpleMailMessage message = new SimpleMailMessage();
23+
message.setTo(recipients);
24+
message.setSubject(subject);
25+
message.setText(content);
26+
mailSender.send(message);
27+
28+
log.info("[EMAIL] 예약메일 발송 성공: 수신자={}", String.join(", ", recipients));
29+
} catch (Exception e) {
30+
log.error("[EMAIL] 예약메일 발송 실패: 수신자={}, 에러={}", String.join(", ", recipients), e.getMessage(), e);
31+
throw new GeneralException(ErrorStatus._RESERVATION_SEND_EMAIL_FAILED);
32+
}
2133
}
2234
}

src/main/java/com/gotogether/global/apipayload/code/status/ErrorStatus.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public enum ErrorStatus implements BaseErrorCode {
5757
_BOOKMARK_NOT_FOUND(HttpStatus.NOT_FOUND, "BOOKMARK4002", "북마크를 찾을 수 없습니다."),
5858

5959
_RESERVATION_EMAIL_NOT_FOUND(HttpStatus.NOT_FOUND, "RESERVATION_EMAIL4001", "예약 메일이 없습니다."),
60+
_RESERVATION_SEND_EMAIL_FAILED(HttpStatus.INTERNAL_SERVER_ERROR, "RESERVATION_EMAIL5001", "예약 메일 전송에 실패했습니다."),
6061

6162
_TICKET_OPTION_NOT_FOUND(HttpStatus.NOT_FOUND, "TICKET_OPTION4001", "티켓 옵션이 존재하지 않습니다."),
6263
_TICKET_OPTION_ASSIGNMENT_NOT_FOUND(HttpStatus.NOT_FOUND, "TICKET_OPTION_ASSIGN4001", "해당 티켓에 부착된 옵션이 없습니다."),
@@ -72,7 +73,8 @@ public enum ErrorStatus implements BaseErrorCode {
7273

7374
_SMS_ALREADY_SEND(HttpStatus.BAD_REQUEST, "SMS4001", "이미 인증 코드가 발송되었습니다."),
7475
_SMS_CERTIFICATION_EXPIRED(HttpStatus.BAD_REQUEST, "SMS4002", "인증 코드가 만료되었습니다."),
75-
_SMS_CERTIFICATION_MISMATCH(HttpStatus.BAD_REQUEST, "SMS4003", "인증 코드가 일치하지 않습니다.");
76+
_SMS_CERTIFICATION_MISMATCH(HttpStatus.BAD_REQUEST, "SMS4003", "인증 코드가 일치하지 않습니다."),
77+
_SMS_SEND_FAIL(HttpStatus.INTERNAL_SERVER_ERROR, "SMS5001", "SMS 전송에 실패했습니다.");
7678

7779
private final HttpStatus httpStatus;
7880
private final String code;

src/main/java/com/gotogether/global/common/service/S3UploadService.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
import com.gotogether.global.common.dto.S3UrlResponseDTO;
1818

1919
import lombok.RequiredArgsConstructor;
20+
import lombok.extern.slf4j.Slf4j;
2021

2122
@Service
23+
@Slf4j
2224
@RequiredArgsConstructor
2325
public class S3UploadService {
2426

@@ -41,13 +43,16 @@ public S3UrlResponseDTO generatePreSignUrl(Long userId, String fileName, HttpMet
4143

4244
String url = amazonS3.generatePresignedUrl(generatePresignedUrlRequest).toString();
4345

46+
log.info("[S3] Pre-signed URL 생성 완료 (userId: {})", userId);
47+
4448
return S3UrlResponseDTO.builder()
4549
.preSignedUrl(url)
4650
.build();
4751
}
4852

4953
public String moveTempImageToFinal(String imageUrl) {
5054
if (imageUrl == null || !imageUrl.contains("temp/")) {
55+
log.warn("[S3] 이미지 URL이 null이거나 임시 경로가 아님: {}", imageUrl);
5156
return imageUrl;
5257
}
5358

@@ -56,14 +61,18 @@ public String moveTempImageToFinal(String imageUrl) {
5661
String finalUrl = imageUrl.replace("temp/", "final/");
5762

5863
moveFile(tempKey, finalKey);
64+
log.info("[S3] 이미지를 임시 경로에서 최종 경로로 이동 완료: {} -> {}", tempKey, finalKey);
65+
5966
return finalUrl;
6067
}
6168

6269
public void deleteFile(String imageUrl) {
6370
String key = extractKeyFromUrl(imageUrl);
6471

6572
DeleteObjectRequest deleteObjectRequest = new DeleteObjectRequest(bucketName, key);
73+
6674
amazonS3.deleteObject(deleteObjectRequest);
75+
log.info("[S3] 파일 삭제 완료: {}", key);
6776
}
6877

6978
private String extractKeyFromUrl(String url) {

src/main/java/com/gotogether/global/common/service/SmsService.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@
1313
import com.gotogether.global.util.SmsCertificationUtil;
1414

1515
import lombok.RequiredArgsConstructor;
16+
import lombok.extern.slf4j.Slf4j;
1617

1718
@Service
19+
@Slf4j
1820
@RequiredArgsConstructor
1921
public class SmsService {
2022

@@ -35,7 +37,15 @@ public void sendCertificationCode(SmsRequestDTO request) {
3537
}
3638

3739
redisTemplate.opsForValue().set(key, code, TTL);
38-
smsCertificationUtil.sendSMS(request.getPhoneNumber(), code);
40+
41+
try {
42+
smsCertificationUtil.sendSMS(request.getPhoneNumber(), code);
43+
log.info("[SMS] 전송 성공: 전화번호={}, 코드={}", phoneNumber, code);
44+
} catch (Exception e) {
45+
log.error("[SMS] 전송 실패: 전화번호={}, 에러={}", phoneNumber, e.getMessage(), e);
46+
redisTemplate.delete(key);
47+
throw new GeneralException(ErrorStatus._SMS_SEND_FAIL);
48+
}
3949
}
4050

4151
public void verifyCertificationCode(SmsVerifyRequestDTO request) {
@@ -52,6 +62,7 @@ public void verifyCertificationCode(SmsVerifyRequestDTO request) {
5262
}
5363

5464
redisTemplate.delete(key);
65+
log.info("[SMS] 인증 완료: 전화번호 {} ", phoneNumber);
5566
}
5667

5768
private String generate() {

src/main/java/com/gotogether/global/interceptor/LoggingInterceptor.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ public class LoggingInterceptor implements HandlerInterceptor {
1717
@Override
1818
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
1919
request.setAttribute(START_TIME, System.currentTimeMillis());
20-
21-
logger.info("로깅 인터셉터 시작");
20+
21+
logger.info("===================== [로깅 인터셉터 시작] =====================");
2222
logger.info("[요청] {} {}", request.getMethod(), request.getRequestURI());
2323
logRequestHeaders(request);
2424

@@ -31,12 +31,14 @@ public void afterCompletion(HttpServletRequest request, HttpServletResponse resp
3131
long duration = (startTime != null) ? (System.currentTimeMillis() - startTime) : -1;
3232

3333
logRequestBody(request);
34-
35-
logger.info("[응답] {} {} (상태: {}, 시간: {}ms)",
34+
35+
logger.info("-----------------------------------------------------------");
36+
logger.info("[응답] {} {} (상태: {}, 시간: {}ms)",
3637
request.getMethod(), request.getRequestURI(), response.getStatus(), duration);
3738

3839
logResponseHeaders(response);
3940
logResponseBody(response);
41+
logger.info("===========================================================\n");
4042
}
4143

4244
private void logRequestHeaders(HttpServletRequest request) {

0 commit comments

Comments
 (0)