Java 使用ControllerAdvice的Spring Boot REST自定义异常未显示在日志或标准输出中

Java 使用ControllerAdvice的Spring Boot REST自定义异常未显示在日志或标准输出中,java,spring,spring-boot,exception,controller-advice,Java,Spring,Spring Boot,Exception,Controller Advice,在一个使用Java1.8、lombok和SpringBoot2.1.5.RELEASE的项目中,创建了一个自定义异常,它不会显示在我的日志文件或标准输出中的任何地方 pom.xml: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <versio

在一个使用Java1.8、lombok和SpringBoot2.1.5.RELEASE的项目中,创建了一个自定义异常,它不会显示在我的日志文件或标准输出中的任何地方


pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.5.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
   <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
       <optional>true</optional>
   </dependency>
</dependencies>

控制器建议:

@Slf4j
@ControllerAdvice(annotations = RestController.class)
public class ProductControllerAdvice {

    @ExceptionHandler(ProductNotFoundException.class)
    @ResponseStatus(value= HttpStatus.NOT_FOUND)
    public void handleProductNotFoundException() {
        log.error("\n\n\tProductNotFoundException handler executed\n");
    }
}
当我到达REST端点时:

http://localhost:8080/products/0
它返回一个HTTP404,它应该返回

但是我在logs.log(使用
grep-rnw logs.log-e'ERROR'
)文件和/或stdout中的任何地方都没有看到错误

另外,尝试使用
ProductNoteException扩展RuntimeException
,但仍然无法正常工作


我可能做错了什么?

控制器似乎没有抛出异常。@stringy05-您看不到我在
getProductById()
的方法签名后放置了
抛出IOException、ProductNotFoundException
?这可能没有帮助,但它对我来说是有效的,使用您的类时保持不变。我需要在grep命令中添加-5,以便在错误发生后输出消息。
抛出
只是告诉编译器该方法抛出该类异常,代码需要实际抛出才能触发异常处理程序。而不是
返回新的ResponseEntity(HttpStatus.NOT_FOUND)
您可以使用
抛出新的ProductNotFoundException(),将触发异常处理程序
@Slf4j
@ControllerAdvice(annotations = RestController.class)
public class ProductControllerAdvice {

    @ExceptionHandler(ProductNotFoundException.class)
    @ResponseStatus(value= HttpStatus.NOT_FOUND)
    public void handleProductNotFoundException() {
        log.error("\n\n\tProductNotFoundException handler executed\n");
    }
}
http://localhost:8080/products/0