簡體   English   中英

記錄404s的最小Spring Boot Code

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM