Spring boot 删除“;跟踪“;来自ResponseStatusException的字段
在我的spring控制器中,如果没有找到实体,我将返回一个Spring boot 删除“;跟踪“;来自ResponseStatusException的字段,spring-boot,Spring Boot,在我的spring控制器中,如果没有找到实体,我将返回一个ResponseStatusException,如下所示: @GetMapping("/categories/{id}") public ResponseEntity<Category> getCategoryById(@PathVariable(value = "id") String id) { try { return new ResponseEntity<Category>(cate
ResponseStatusException
,如下所示:
@GetMapping("/categories/{id}")
public ResponseEntity<Category> getCategoryById(@PathVariable(value = "id") String id) {
try {
return new ResponseEntity<Category>(categoryService.findById(id), HttpStatus.OK);
} catch (CategoryNotFoundException ex) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, ex.getMessage());
}
}
但是响应还包括一个长字段“trace”
,带有嵌套的异常。有没有办法去掉跟踪字段?如果依赖项中有“spring boot devtools”,那么“跟踪”字段似乎就存在了。 排除devtools后,我在输出中没有看到这样的跟踪
希望有帮助。
spring boot devtools
设置属性服务器。错误。将stacktrace
包含到始终
您可以在应用程序中保留devtools,同时删除跟踪。yml
:
server:
error:
include-stacktrace: on_trace_param
打开
application.properties
并添加以下行:
server.error.include-stacktrace=never
我知道我参加聚会迟到了,但我最近遇到了这种情况,并用另一种解决方案解决了问题,因为在我的情况下,上述解决方案都不起作用 我使用
Spring boot devtools
,它会自动设置服务器。错误。include stacktrace=always
因此,我通过覆盖exception类中的fillInStackTrace
方法来抑制堆栈跟踪,如下所示
public class DuplicateFoundException extends RuntimeException {
@Override
public synchronized Throwable fillInStackTrace() {
return this;
}
}
ps1:我参考了这篇文章
ps2:您也可以在其他答案中尝试以下建议的解决方案:
(在我的情况下,这些都不起作用)
如果您使用的是application.properties
文件,请在属性文件中添加以下行
server.error.include-stacktrace=on_trace_param
如果您使用的是application.yml
文件,请在yml文件中添加以下行
server:
error:
include-stacktrace: on_trace_param
是的,“trace”字段在没有devtools的情况下消失了,谢谢!它只能在application.properties中配置为@KimchiMan answer中提到的“server.error.include stacktrace=never”。@aschmid我正在添加属性“server.error.include stacktrace=never”谢谢!简单,容易,准确!为我工作!谢谢
server:
error:
include-stacktrace: on_trace_param