From 99dd2b9d6539400150b7189443657f63e4ce06b0 Mon Sep 17 00:00:00 2001 From: yang Date: Thu, 24 Oct 2024 01:35:54 +0900 Subject: [PATCH] =?UTF-8?q?RAC-449=20feat=20:=20500=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=ED=83=90=EC=A7=80=EC=8B=9C=20=EC=8A=AC=EB=9E=99=20=EB=B0=9C?= =?UTF-8?q?=EC=86=A1=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/GlobalExceptionHandler.java | 3 ++ .../global/slack/SlackErrorMessage.java | 28 +++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/postgraduate/global/exception/GlobalExceptionHandler.java b/src/main/java/com/postgraduate/global/exception/GlobalExceptionHandler.java index 1708d2ff..ce9cb5ba 100644 --- a/src/main/java/com/postgraduate/global/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/postgraduate/global/exception/GlobalExceptionHandler.java @@ -3,6 +3,7 @@ import com.postgraduate.global.constant.ErrorCode; import com.postgraduate.global.dto.ErrorResponse; import com.postgraduate.global.dto.ResponseDto; +import com.postgraduate.global.slack.SlackErrorMessage; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; @@ -17,6 +18,7 @@ @RequiredArgsConstructor public class GlobalExceptionHandler { private static final String LOG_FORMAT = "Code : {}, Message : {}"; + private final SlackErrorMessage slackErrorMessage; @ExceptionHandler(ApplicationException.class) public ResponseEntity> handleApplicationException(ApplicationException ex) { @@ -34,6 +36,7 @@ public ResponseEntity> handleArgumentValidException(M public ResponseEntity> handleInternalServerException(Exception ex) { log.error(LOG_FORMAT, "500", ex.getStackTrace()); log.error("errorMessage : {}", ex.getMessage()); + slackErrorMessage.sendSlackServerError(ex); return ResponseEntity.internalServerError().build(); } } diff --git a/src/main/java/com/postgraduate/global/slack/SlackErrorMessage.java b/src/main/java/com/postgraduate/global/slack/SlackErrorMessage.java index fa9bdea3..aa3e52eb 100644 --- a/src/main/java/com/postgraduate/global/slack/SlackErrorMessage.java +++ b/src/main/java/com/postgraduate/global/slack/SlackErrorMessage.java @@ -11,6 +11,7 @@ import java.io.IOException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.Arrays; import java.util.List; import static com.postgraduate.global.slack.SlackUtils.generateSlackField; @@ -63,6 +64,19 @@ public void sendSlackBizppurioError(String phoneNumber) { } } + public void sendSlackServerError(Exception ex) { + try { + slackClient.send(logWebHookUrl, Payload.builder() + .text("알림톡 발송 실패! 확인 요망!!") + .attachments( + List.of(generateServerErrorSlackAttachMent(ex)) + ) + .build()); + } catch (IOException e) { + log.error("slack 전송 오류"); + } + } + private Attachment generateMentoringErrorSlackAttachment(Long mentoringId, Throwable ex) { String requestTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:SS").format(LocalDateTime.now()); return Attachment.builder() @@ -74,7 +88,6 @@ private Attachment generateMentoringErrorSlackAttachment(Long mentoringId, Throw )) .build(); } - private Attachment generateSalaryErrorSlackAttachment(Long seniorId, Throwable ex) { String requestTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:SS").format(LocalDateTime.now()); return Attachment.builder() @@ -86,7 +99,6 @@ private Attachment generateSalaryErrorSlackAttachment(Long seniorId, Throwable e )) .build(); } - private Attachment generateBizppurioErrorSlackAttachment(String phoneNumber) { String requestTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:SS").format(LocalDateTime.now()); return Attachment.builder() @@ -97,4 +109,16 @@ private Attachment generateBizppurioErrorSlackAttachment(String phoneNumber) { )) .build(); } + + private Attachment generateServerErrorSlackAttachMent(Exception ex) { + String requestTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:SS").format(LocalDateTime.now()); + return Attachment.builder() + .color("ff0000") + .title(requestTime + "에 발생한 500 에러") + .fields(List.of( + generateSlackField("500 에러 발생", ex.getMessage()), + generateSlackField("StackTrace", Arrays.toString(ex.getStackTrace())) + )) + .build(); + } }