Browse Source

feat: 공통 exception 설정

pull/3/head
지대한 8 months ago
parent
commit
1fc4f1c93d
  1. 5
      app/kac-app/src/main/java/kr/co/palnet/kac/app/config/MessageSourceConfig.java
  2. 98
      app/kac-app/src/main/java/kr/co/palnet/kac/app/core/exception/ServerExceptionHandler.java
  3. 4
      app/kac-app/src/main/java/kr/co/palnet/kac/app/core/web/BaseAcceptHeaderLocaleResolver.java
  4. 27
      app/kac-app/src/main/resources/messages/errors/error.properties
  5. 27
      app/kac-app/src/main/resources/messages/errors/error_en.properties
  6. 136
      common/core/src/main/java/kr/co/palnet/kac/core/exception/AppException.java
  7. 107
      common/core/src/main/java/kr/co/palnet/kac/core/exception/BaseErrorCode.java
  8. 138
      common/core/src/main/java/kr/co/palnet/kac/core/exception/BaseException.java
  9. 25
      common/core/src/main/java/kr/co/palnet/kac/core/exception/Level.java
  10. 6
      common/core/src/main/java/kr/co/palnet/kac/core/exception/Source.java
  11. 10
      common/core/src/main/java/kr/co/palnet/kac/core/exception/model/BaseErrorModel.java

5
app/kac-app/src/main/java/kr/co/palnet/kac/app/config/MessageSourceConfig.java

@ -1,21 +1,17 @@
package kr.co.palnet.kac.app.config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
@Slf4j
@Configuration
public class MessageSourceConfig {
@Bean(name = "errorMessageSource")
public MessageSource getErrorMessageSource() {
log.debug("===>> error message source local : {} ", LocaleContextHolder.getLocale());
ReloadableResourceBundleMessageSource errorMessageSource = new ReloadableResourceBundleMessageSource();
errorMessageSource.setBasenames("classpath:messages/errors/error");
errorMessageSource.setDefaultEncoding("UTF-8");
@ -25,7 +21,6 @@ public class MessageSourceConfig {
@Bean(name = "errorMessageSourceAccessor")
public MessageSourceAccessor errorMessageSourceAccessor(@Qualifier("errorMessageSource") MessageSource errorMessageSource) {
log.debug("===>> error message source accessor local : {} ", LocaleContextHolder.getLocale());
return new MessageSourceAccessor(errorMessageSource);
}
}

98
app/kac-app/src/main/java/kr/co/palnet/kac/app/core/exception/ServerExceptionHandler.java

@ -1,10 +1,16 @@
package kr.co.palnet.kac.app.core.exception;
import kr.co.palnet.kac.core.exception.AppException;
import kr.co.palnet.kac.core.exception.BaseErrorCode;
import kr.co.palnet.kac.core.exception.BaseException;
import kr.co.palnet.kac.core.exception.Level;
import kr.co.palnet.kac.core.exception.model.BaseErrorModel;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.NoSuchMessageException;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@ -13,70 +19,114 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.resource.NoResourceFoundException;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
@RestControllerAdvice
@Slf4j
@RequiredArgsConstructor
@RestControllerAdvice
public class ServerExceptionHandler {
@Qualifier("errorMessageSourceAccessor")
private final MessageSourceAccessor errorMessageSourceAccessor;
@ExceptionHandler(AppException.class)
public ResponseEntity<BaseErrorModel> appExceptionHandle(AppException e) {
@ExceptionHandler(BaseException.class)
public ResponseEntity<BaseErrorModel> appExceptionHandle(BaseException e) {
BaseErrorCode errorType = e.getErrorCode();
BaseErrorModel baseBody = new BaseErrorModel();
baseBody.setTimestamp(DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(Instant.now().atZone(ZoneId.systemDefault())));
baseBody.setStatus(errorType.status());
baseBody.setError(errorType.code());
baseBody.setMessage(errorType.message());
baseBody.setTimestamp(Instant.now());
baseBody.setStatus(errorType.status().value());
baseBody.setError(errorType.status().getReasonPhrase());
baseBody.setCode(errorType.code());
baseBody.setMessage(this.getMessage(errorType));
baseBody.setPath(this.getUrl());
log.warn("",e);
this.printLog(e);
return ResponseEntity.status(errorType.status()).body(baseBody);
}
@ExceptionHandler(NoResourceFoundException.class)
public ResponseEntity<BaseErrorModel> noResourceFoundException(NoResourceFoundException e){
public ResponseEntity<BaseErrorModel> noResourceFoundException(NoResourceFoundException e) {
BaseErrorModel baseBody = new BaseErrorModel();
baseBody.setTimestamp(DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(Instant.now().atZone(ZoneId.systemDefault())));
baseBody.setTimestamp(Instant.now());
baseBody.setStatus(e.getBody().getStatus());
baseBody.setError(BaseErrorCode.NOT_FOUND_RESOURCE.code());
baseBody.setMessage(e.getBody().getDetail());
baseBody.setError(e.getBody().getDetail());
baseBody.setCode(BaseErrorCode.WEB_NOT_FOUND.code());
baseBody.setMessage(this.getMessage(BaseErrorCode.WEB_NOT_FOUND));
baseBody.setPath(e.getResourcePath());
log.warn("",e);
log.warn("", e);
return ResponseEntity.status(e.getBody().getStatus()).body(baseBody);
}
@ExceptionHandler(Exception.class)
public ResponseEntity<BaseErrorModel> exceptionHandle(Exception e) {
BaseErrorCode errorType = BaseErrorCode.INTERNAL_SERVER_ERROR;
BaseErrorCode errorType = BaseErrorCode.UNKNOWN;
BaseErrorModel baseBody = new BaseErrorModel();
baseBody.setTimestamp(DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(Instant.now().atZone(ZoneId.systemDefault())));
baseBody.setStatus(500);
baseBody.setError(e.getClass().getSimpleName());
baseBody.setTimestamp(Instant.now());
baseBody.setStatus(errorType.status().value());
baseBody.setError(errorType.status().getReasonPhrase());
baseBody.setCode(errorType.code());
baseBody.setMessage(this.getMessage(errorType));
baseBody.setPath(this.getUrl());
baseBody.setMessage(errorType.message());
log.warn("",e);
log.error("", e);
return ResponseEntity.status(errorType.status()).body(baseBody);
}
private String getUrl() {
ServletRequestAttributes servletRequestAttr = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (servletRequestAttr != null) return servletRequestAttr.getRequest().getRequestURI();
else return null;
}
private String getMessage(BaseErrorCode e) {
String message = null;
try {
// message = errorMessageSourceAccessor.getMessage(e.code(), LocaleContextHolder.getLocale());
message = errorMessageSourceAccessor.getMessage(e.code());
} catch (NoSuchMessageException noSuchMessageException) {
message = "관리자에게 문의해주세요.";
}
return message;
}
private void printLog(BaseException e) {
Level level = e.getLevel();
String message = e.getLogMessage() == null ? e.getMessage() : e.getLogMessage();
Object[] paramArray = e.getParamArray();
switch (level) {
case TRACE:
log.trace("message: {}, params: {}, trace: {}", message, paramArray, e.getStackTrace());
log.trace("", e);
break;
case DEBUG:
log.debug("message: {}, params: {}, trace: {}", message, paramArray, e.getStackTrace());
log.debug("", e);
break;
case INFO:
log.info("message: {}, params: {}, trace: {}", message, paramArray, e.getStackTrace());
log.info("", e);
break;
case WARN:
log.warn("message: {}, params: {}, trace: {}", message, paramArray, e.getStackTrace());
log.warn("", e);
break;
case ERROR:
log.trace("message: {}, params: {}, trace: {}", message, paramArray, e.getStackTrace());
log.error("", e);
break;
default:
break;
}
}
}
}

4
app/kac-app/src/main/java/kr/co/palnet/kac/app/core/web/BaseAcceptHeaderLocaleResolver.java

@ -2,6 +2,7 @@ package kr.co.palnet.kac.app.core.web;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;
@ -57,8 +58,7 @@ public class BaseAcceptHeaderLocaleResolver extends AcceptHeaderLocaleResolver {
.distinct()
.findFirst().orElse(Locale.KOREAN);
}
log.info("{}, {}", request.getHeader(LOCALE_HEADER_KEY), locale);
// log.debug("{}, {}", request.getHeader(LOCALE_HEADER_KEY), locale);
return locale;
} catch (IllegalArgumentException e) {
log.warn("{}", e.getMessage());

27
app/kac-app/src/main/resources/messages/errors/error.properties

@ -1,5 +1,22 @@
TEST001=\uD14C\uC2A4\uD2B8001
TEST002=\uD14C\uC2A4\uD2B8002
TEST003=\uD14C\uC2A4\uD2B8003
TEST004=\uD14C\uC2A4\uD2B8004
TEST005=\uD14C\uC2A4\uD2B8005
CM001=\uC131\uACF5\uC785\uB2C8\uB2E4.
CM900=\uC54C \uC218 \uC5C6\uB294 \uC624\uB958\uC785\uB2C8\uB2E4.
CM999=\uC2E4\uD328\uC785\uB2C8\uB2E4.
CM002=\uC694\uCCAD\uD558\uC2E0 \uB0B4\uC6A9\uC774 \uCC98\uB9AC \uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
CM003=\uC785\uCD9C\uB825 \uC624\uB958\uC785\uB2C8\uB2E4.
CM100=\uB85C\uADF8\uC778\uC744 \uB2E4\uC2DC \uD574\uC8FC\uC138\uC694.
CM101=\uC774\uBBF8 \uB85C\uADF8\uC778\uD55C \uC0AC\uC6A9\uC790\uC785\uB2C8\uB2E4.
CM102=\uB85C\uADF8\uC778 \uC2DC\uB3C4\uAC00 \uC815\uD574\uC9C4 \uD69F\uC218\uB97C \uCD08\uACFC\uD558\uC600\uC2B5\uB2C8\uB2E4.
CM110=SNS \uB85C\uADF8\uC778\uC744 \uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
CM111=\uC774\uBBF8 \uAC00\uC785\uB41C SNS \uACC4\uC815\uC785\uB2C8\uB2E4.
CM120=\uD1A0\uD070\uC774 \uB9CC\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
CM121=\uC798\uBABB\uB41C \uD1A0\uD070\uC785\uB2C8\uB2E4.
CM130=\uC0AC\uC6A9\uC790\uC758 \uACC4\uC815\uC774 \uC815\uC9C0\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
CM131=\uC0AC\uC6A9\uC790\uC758 \uACC4\uC815\uC774 \uD734\uBA74\uC0C1\uD0DC\uC785\uB2C8\uB2E4.
CM200=\uCE90\uC2DC \uB85C\uB529\uC5D0 \uC2E4\uD328\uD558\uC600\uC2B5\uB2C8\uB2E4.
CM201=\uCE90\uC2DC \uB9AC\uB85C\uB529\uC5D0 \uC2E4\uD328\uD558\uC600\uC2B5\uB2C8\uB2E4.
CM401=\uC0AC\uC6A9\uC790\uC758 \uAD8C\uD55C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
WB400=\uD30C\uB77C\uBBF8\uD130\uB97C \uB2E4\uC2DC \uD655\uC778 \uD6C4 \uC694\uCCAD\uD574\uC8FC\uC138\uC694.
WB500=\uC678\uBD80 \uC5F0\uB3D9 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD558\uC600\uC2B5\uB2C8\uB2E4.
WB404=\uC694\uCCAD\uD558\uC2E0 URL\uC774 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
DT001=\uC774\uBBF8 \uB4F1\uB85D\uB41C \uB370\uC774\uD130 \uC785\uB2C8\uB2E4.
DT002=\uC694\uCCAD\uD55C \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.

27
app/kac-app/src/main/resources/messages/errors/error_en.properties

@ -1,5 +1,22 @@
TEST001=TEST001
TEST002=TEST002
TEST003=TEST003
TEST004=TEST004
TEST005=TEST005
CM001=It's a success.
CM900=Unknown error.
CM999=It's a failure.
CM002=Your request has not been processed.
CM003=Input/output error.
CM100=Please log in again.
CM101=This is a user who has already logged in.
CM102=The login attempt exceeded the specified number of times.
CM110=I can't log in to SNS.
CM111=This is an SNS account that has already been subscribed.
CM120=The token has expired.
CM121=Invalid token.
CM130=Your account has been suspended.
CM131=Your account is dormant.
CM200=Cache loading failed.
CM201=Cache reloading failed.
CM401=You do not have permissions.
WB400=Please check the parameters again and request them.
WB500=External interlocking error occurred.
WB404=The URL you requested does not exist.
DT001=Data already registered.
DT002=No data requested.

136
common/core/src/main/java/kr/co/palnet/kac/core/exception/AppException.java

@ -1,136 +0,0 @@
package kr.co.palnet.kac.core.exception;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.MessageSource;
import java.util.Locale;
@Slf4j
public class AppException extends RuntimeException {
private static final long serialVersionUID = 1L;
private final Level level;
private final Source source;
private final BaseErrorCode errorCode;
private final Object[] paramArray;
private String sourceErrorCode;
private String sourceErrorMessage;
public AppException(Throwable th, Level level, Source source, BaseErrorCode errorCode, Object... paramArray) {
super(th != null ? th.getMessage() : errorCode.message(), th);
this.level = level;
this.errorCode = errorCode;
this.source = source;
this.paramArray = paramArray;
this.sourceErrorCode = errorCode.code();
this.sourceErrorMessage = errorCode.message();
}
public AppException(Throwable th, Level level, BaseErrorCode errorCode, Object... paramArray) {
this(th, level, Source.INTERNAL, errorCode, paramArray);
}
public AppException(Throwable th, Source source, BaseErrorCode errorCode, Object... paramArray) {
this(th, Level.WARN, source, errorCode, paramArray);
}
public AppException(Throwable th, BaseErrorCode errorCode, Object... paramArray) {
this(th, Level.WARN, Source.INTERNAL, errorCode, paramArray);
}
public AppException(Level level, Source source, String errorCode, Object... paramArray) {
this(null, level, source, errorCode, paramArray);
}
public AppException(Level level, String errorCode, Object... paramArray) {
this(null, level, Source.INTERNAL, errorCode, paramArray);
}
public AppException(Source source, String errorCode, Object... paramArray) {
this(null, Level.WARN, source, errorCode, paramArray);
}
public AppException(BaseErrorCode errorCode, Object... paramArray) {
this(null, Level.WARN, Source.INTERNAL, errorCode, paramArray);
}
// public BaseException(String errorCode) {
// this(errorCode, new Object());
// }
public AppException(Throwable th, BaseErrorCode erorCode, String sourceErrorMessage) {
this(th, Level.WARN, BaseErrorCode.INTERNAL_SERVER_ERROR, (Object[])null);
this.sourceErrorCode = erorCode.code();
this.sourceErrorMessage = errorCode.message();
}
public AppException(BaseErrorCode sourceErrorCode, String sourceErrorMessage) {
this(null, sourceErrorCode, sourceErrorMessage);
}
@Deprecated
public AppException(Throwable th, Level level, BaseErrorCode errorCode, Source source, Object... paramArray) {
this(th, level, source, errorCode, paramArray);
}
@Deprecated
public AppException(Level level, BaseErrorCode errorCode, Source source, Object... paramArray) {
this(null, level, source, errorCode, paramArray);
}
public String getCode() {
return errorCode.code();
}
public BaseErrorCode getErrorCode(){
return errorCode;
}
public Object[] getParamArray() {
return paramArray;
}
public Level getLevel() {
return level;
}
public Source getSource() {
return source;
}
public String getErrorMessage(MessageSource ms) {
if (ms == null) {
return BaseErrorCode.INTERNAL_SERVER_ERROR.message();
}
log.debug("############ getErrorMessage : {}",ms);
log.debug("############ getErrorCode : {}",getCode());
log.debug("############ getParamArray : {}",getParamArray());
log.debug("############ ErrorCode.NOT_REGIST_ERROR_CODE.message() : {}", BaseErrorCode.NOT_REGIST_ERROR_CODE.message());
log.debug("############ Locale.getDefault() : {}",Locale.getDefault());
return ms.getMessage(getCode(), getParamArray(), BaseErrorCode.NOT_REGIST_ERROR_CODE.message(), Locale.getDefault());
}
public String getSourceErrorCode() {
return sourceErrorCode;
}
public void setSourceErrorCode(String sourceErrorCode) {
this.sourceErrorCode = sourceErrorCode;
}
public String getSourceErrorMessage() {
return sourceErrorMessage;
}
public void setSourceErrorMessage(String sourceErrorMessage) {
this.sourceErrorMessage = sourceErrorMessage;
}
}

107
common/core/src/main/java/kr/co/palnet/kac/core/exception/BaseErrorCode.java

@ -1,63 +1,54 @@
package kr.co.palnet.kac.core.exception;
public enum BaseErrorCode {
SUCCESS("1", 200, "성공"),
FAIL("-1" , 500, "실패"),
CREATE_SUCCESS("HC201", 201, "성공"),
NON_VALID_PARAMETER("VP001", 400, "파라미터가 유효하지 않습니다."),
INTERNAL_SERVER_ERROR("ER500", 500, "내부 시스템 오류"),
NOT_REGIST_ERROR_CODE("ER501", 500, "등록되지 않은 오류 코드"),
DATA_NOTFIND("DT001", 204,"데이터 를 찾을수 없습니다."),
DATA_DUPLICATE("DT002", 500, "중복 데이터가 존재합니다."),
DATA_NO("DT003", 500, "데이터 미존재"),
ALREADY_CERT("CT001", 200, "이미 인증 되어있는 값 입니다."),
DB_ERROR("DB001", 500, "디비 처리중 오류"),
NOT_FOUND_RESOURCE("N001", 404, "정의되지 않은 요청입니다."),
TIME_OUT("T001", 400, "인증 시간 초과"),
FILE_ERROR("F001", 500, "파일 읽어오기 오류"),
FILE_PARSING_ERROR("F002", 500, "파일 파싱중 오류"),
import org.springframework.http.HttpStatus;
NOT_AUTHENTICATION_USER("P001", 400, "인증실패"),
NOT_AUTHORIZED_USER("P002", 401, "인가되지 않은 사용자"),
NOT_PERMISSION("P003", 403, "권한이 없는 사용자"),
EXTERNAL_API_ERROR("EA500", 500, "외부서버 호출에 실패하였습니다.")
;
private final String code;
private final int status;
private final String message;
private BaseErrorCode(String code, int status, String message) {
this.code = code;
this.status = status;
this.message = message;
}
public String code() {
return this.code;
}
public String message() {
return this.message;
}
public int status(){
return this.status;
}
public enum BaseErrorCode {
SUCCESS("CM001", HttpStatus.OK, "성공"),
FAILED("CM900", HttpStatus.INTERNAL_SERVER_ERROR, "실패"),
UNKNOWN("CM999", HttpStatus.INTERNAL_SERVER_ERROR, "실패(사용자 정의 없는 에러)"),
NOT_PROCESS("CM002", HttpStatus.INTERNAL_SERVER_ERROR, "처리되지 않음"),
IO_ERROR("CM003", HttpStatus.INTERNAL_SERVER_ERROR, "IO 에러"),
LOGIN_FAILED("CM100", HttpStatus.INTERNAL_SERVER_ERROR, "로그인 실패"),
LOGIN_DUPLICATED("CM101", HttpStatus.INTERNAL_SERVER_ERROR, "중복 로그인"),
LOGIN_ATTEMPT_COUNT("CM102", HttpStatus.INTERNAL_SERVER_ERROR, "로그인 실패 횟수 초과"),
LOGIN_SNS_FAILED("CM110", HttpStatus.INTERNAL_SERVER_ERROR, "SNS 로그인 실패"),
LOGIN_SNS_DUPLICATED("CM111", HttpStatus.INTERNAL_SERVER_ERROR, "SNS 가입 중복"),
TOKEN_EXPIRED("CM120", HttpStatus.INTERNAL_SERVER_ERROR, "토큰 만료"),
TOKEN_INVALID("CM121", HttpStatus.INTERNAL_SERVER_ERROR, "잘못된 토큰"),
ACCOUNT_LOCK("CM130", HttpStatus.INTERNAL_SERVER_ERROR, "계정 잠김"),
ACCOUNT_DORMANT("CM131", HttpStatus.INTERNAL_SERVER_ERROR, "휴면 계정"),
CACHE_LOAD_FAILED("CM200", HttpStatus.INTERNAL_SERVER_ERROR, "캐시 로딩 실패"),
CACHE_RELOAD_FAILED("CM201", HttpStatus.INTERNAL_SERVER_ERROR, "캐시 리로딩 실패"),
AUTH_EMPTY("CM401", HttpStatus.UNAUTHORIZED, "권한 없음"),
WEB_PARAM_INVALID("WB400", HttpStatus.INTERNAL_SERVER_ERROR, "잘못된 파라미터"),
WEB_NOT_FOUND("WB404", HttpStatus.INTERNAL_SERVER_ERROR, "찾을수 없는 페이지"),
WEB_API_ERROR("WB500", HttpStatus.INTERNAL_SERVER_ERROR, "외부 연동 에러"),
DATA_ALREADY_EXISTS("DT001", HttpStatus.INTERNAL_SERVER_ERROR, "이미 등록된 데이터"),
DATA_EMPTY("DT002", HttpStatus.INTERNAL_SERVER_ERROR, "데이터 없음");
private final String code;
private final HttpStatus status;
private final String message;
private BaseErrorCode(String code, HttpStatus status, String message) {
this.code = code;
this.status = status;
this.message = message;
}
public String code() {
return this.code;
}
public String message() {
return this.message;
}
public HttpStatus status() {
return this.status;
}
}

138
common/core/src/main/java/kr/co/palnet/kac/core/exception/BaseException.java

@ -0,0 +1,138 @@
package kr.co.palnet.kac.core.exception;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.MessageSource;
import java.util.Locale;
@Getter
@Slf4j
public class BaseException extends RuntimeException {
private final BaseErrorCode errorCode;
private final String logMessage;
private final Level level;
private final Object[] paramArray;
public BaseException() {
this(BaseErrorCode.FAILED, null, Level.WARN, null);
}
public BaseException(Object[] paramArray) {
this(BaseErrorCode.FAILED, null, Level.WARN, paramArray);
}
public BaseException(Level level) {
this(BaseErrorCode.FAILED, null, level, null);
}
public BaseException(Level level, Object[] paramArray) {
this(BaseErrorCode.FAILED, null, level, paramArray);
}
public BaseException(String logMessage) {
this(BaseErrorCode.FAILED, logMessage, Level.WARN, null);
}
public BaseException(String logMessage, Object[] paramArray) {
this(BaseErrorCode.FAILED, logMessage, Level.WARN, paramArray);
}
public BaseException(String logMessage, Level level) {
this(BaseErrorCode.FAILED, logMessage, level, null);
}
public BaseException(String logMessage, Level level, Object[] paramArray) {
this(BaseErrorCode.FAILED, logMessage, level, paramArray);
}
public BaseException(BaseErrorCode errorCode) {
this(errorCode, null, Level.WARN, null);
}
public BaseException(BaseErrorCode errorCode, Object[] paramArray) {
this(errorCode, null, Level.WARN, paramArray);
}
public BaseException(BaseErrorCode errorCode, Level level) {
this(errorCode, null, level, null);
}
public BaseException(BaseErrorCode errorCode, Level level, Object[] paramArray) {
this(errorCode, null, level, paramArray);
}
public BaseException(BaseErrorCode errorCode, String logMessage) {
this(errorCode, logMessage, Level.WARN, null);
}
public BaseException(BaseErrorCode errorCode, String logMessage, Object[] paramArray) {
this(errorCode, logMessage, Level.WARN, paramArray);
}
public BaseException(BaseErrorCode errorCode, String logMessage, Level level) {
this(errorCode, logMessage, level, null);
}
public BaseException(BaseErrorCode errorCode, String logMessage, Level level, Object[] paramArray) {
this.errorCode = errorCode;
this.logMessage = logMessage;
this.level = level;
this.paramArray = paramArray;
}
public BaseException(String message, BaseErrorCode errorCode, String logMessage, Level level, Object[] paramArray) {
super(message);
this.errorCode = errorCode;
this.logMessage = logMessage;
this.level = level;
this.paramArray = paramArray;
}
public BaseException(String message, Throwable cause, BaseErrorCode errorCode, String logMessage, Level level, Object[] paramArray) {
super(message, cause);
this.errorCode = errorCode;
this.logMessage = logMessage;
this.level = level;
this.paramArray = paramArray;
}
public BaseException(Throwable cause, BaseErrorCode errorCode, String logMessage, Level level, Object[] paramArray) {
super(cause);
this.errorCode = errorCode;
this.logMessage = logMessage;
this.level = level;
this.paramArray = paramArray;
}
public BaseException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace, BaseErrorCode errorCode, String logMessage, Level level, Object[] paramArray) {
super(message, cause, enableSuppression, writableStackTrace);
this.errorCode = errorCode;
this.logMessage = logMessage;
this.level = level;
this.paramArray = paramArray;
}
public String getCode() {
return errorCode.code();
}
public String getErrorMessage(MessageSource ms) {
if (ms == null) {
return BaseErrorCode.UNKNOWN.message();
}
log.debug("############ getErrorMessage : {}", ms);
log.debug("############ getErrorCode : {}", getCode());
log.debug("############ getParamArray : {}", getParamArray());
log.debug("############ ErrorCode.NOT_REGIST_ERROR_CODE.message() : {}", BaseErrorCode.UNKNOWN.message());
log.debug("############ Locale.getDefault() : {}", Locale.getDefault());
return ms.getMessage(getCode(), getParamArray(), BaseErrorCode.UNKNOWN.message(), Locale.getDefault());
}
}

25
common/core/src/main/java/kr/co/palnet/kac/core/exception/Level.java

@ -1,24 +1,9 @@
package kr.co.palnet.kac.core.exception;
public enum Level {
INFO(0),
WARN(1),
RETRY(2),
DROP(3),
RECYCLE(4),
CRITICAL(5);
private int code;
Level(int code) {
setLevel(code);
}
public int getLevel() {
return code;
}
public void setLevel(int code) {
this.code = code;
}
TRACE,
DEBUG,
INFO,
WARN,
ERROR
}

6
common/core/src/main/java/kr/co/palnet/kac/core/exception/Source.java

@ -1,6 +0,0 @@
package kr.co.palnet.kac.core.exception;
public enum Source {
SERVER,
INTERNAL
}

10
common/core/src/main/java/kr/co/palnet/kac/core/exception/model/BaseErrorModel.java

@ -1,11 +1,19 @@
package kr.co.palnet.kac.core.exception.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.Instant;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class BaseErrorModel {
private String timestamp;
private Instant timestamp;
private int status;

Loading…
Cancel
Save