programing

로그에 WARN 메시지를 기록하지 않는 Spring @ExceptionHandler 메서드를 작성하려면 어떻게 해야 합니까?

goodjava 2023. 3. 31. 22:24

로그에 WARN 메시지를 기록하지 않는 Spring @ExceptionHandler 메서드를 작성하려면 어떻게 해야 합니까?

Spring Boot 어플리케이션을 사용하고 있습니다.@ExceptionHandler내가 원하는 걸 대부분 해.HTTP 상태 코드를 409로 설정하고 추가 오류 정보를 JSON 응답에 포함합니다.

@ExceptionHandler(PolicyExecutionException.class)
public ResponseEntity handleException(PolicyExecutionException se){
    return ResponseEntity.status(HttpStatus.CONFLICT).body(se.getScriptErrorMap());
}

내가 깨달은 것은 스프링이 클라이언트에 올바른 응답을 제공하지만 WARN 수준에서 메시지를 기록한다는 것입니다.제 메시지는 꽤 길고 고객만 관련된 내용입니다.서버 측에서는 전혀 로그하지 않는 편이 좋습니다.이거 끌 수 있어요?

2017-06-19 18:48:10,659 [p-nio-8060-exec-2] 경고 os.w.s.m.a.ExceptionHandlerExceptionResolver - 핸들러 실행에 의해 발생한 해결된 예외:

한 가지 대안은 그 광경을 잡는 것이다.PolicyExecutionException각 컨트롤러 방식에서 투척할 수 있습니다.이렇게 되면 가능하면 피하고 싶은 보일러 플레이트가 더 생기게 됩니다.

AbstractHandlerExceptionResolver, 슈퍼타입의ExceptionHandlerExceptionResolver는 를 유지합니다.warnLogger에 의해 제어되는 예외 해결 시 해당 메시지를 로깅합니다.

기본값은 경고 로깅 없음입니다.특정 카테고리에 대한 경고 로그인을 활성화하려면 이 설정을 지정합니다.또는 를 덮어씁니다.logException(java.lang.Exception, javax.servlet.http.HttpServletRequest)커스텀 로깅 방법.

를 작성할 때ExceptionHandlerExceptionResolver(또는 디폴트 설정으로 작성된 경우)로 설정됩니다.null사용하지 않습니다.

Spring Boot을 사용하면 Spring Boot가 활성화되어 있는지 여부를 제어할 수 있습니다.

spring.mvc.logResolvedException

응용 프로그램 속성.이것은 의 대응하는 값을 제어합니다.false디폴트에서는, 다음과 같이 설정해 둘 필요가 있습니다.true설정이 되어 있지 않은 경우,setWarnLogCategory명시적으로)


또는 로거를 끕니다.

언급URL : https://stackoverflow.com/questions/44642184/how-do-i-create-a-spring-exceptionhandler-method-that-does-not-log-a-warn-messa