[英]If I add spring-boot-starter-data-jpa to a simple spring application I get 404s but none if it's not there
[英]Minimum Spring Boot Code to log 404s
在我的Spring Boot應用程序中,我目前正在利用resources / public / error / 404.html自定義錯誤頁面在無效URL上顯示(自動)此404頁面錯誤。
是否有一種簡單的方法可以保留此自動功能,並為每個這樣的404添加一條簡單的日志消息(帶有無效的URL)?
理想情況下,盡可能少的代碼我想要一些像:
//Some code
LOGGER.warn("Invalid URL " + request.url);
//Some more code
您需要定義自定義ErrorViewResolver:
@Component
public class MyErrorViewResolver implements ErrorViewResolver {
@Override
public ModelAndView resolveErrorView(HttpServletRequest request, HttpStatus status, Map<String, Object> model) {
if (HttpStatus.NOT_FOUND == status) {
LoggerFactory.getLogger(this.getClass()).error("error 404 for url " + model.get("path"));
return new ModelAndView("error404", model);
}
else {
return new ModelAndView("error", model);
}
}
}
這個MyErrorViewResolver將在BasicErrorController類中自動調用。
對於404錯誤,將顯示視圖“error404”。
對於其他錯誤,將顯示視圖“錯誤”。
視圖必須位於“templates”文件夾(resources / templates / error404.html)中。
添加NotFoundException處理程序。
public class BaseController {
// Logger declaration
@ExceptionHandler(NotFoundException.class)
@ResponseStatus(value = HttpStatus.NOT_FOUND)
@ResponseBody
public ErrorResponse handleNotFoundError(HttpServletRequest req, NotFoundException exception) {
List<Error> errors = Lists.newArrayList();
errors.add(new Error(String.valueOf(exception.getCode()), exception.getMessage()));
log.error(exception);
return new ErrorResponse(errors);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.