账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    springboot @ExceptionHandler 异常 取消默认日志处理
    45
    0
    @Slf4j@RestControllerAdvicepublic class GlobalExceptionHandler { @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(RuntimeException.class) public AjaxResult handler(RuntimeException e) { // e.printStackTrace(); log.error("Assert异常:----------{}",e.getMessage()); return AjaxResult.fail(e.getMessage()); } @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(IllegalArgumentException.class) public AjaxResult handler(IllegalArgumentException e) { log.error("Assert异常:----------{}",e.getMessage()); return AjaxResult.fail(e.getMessage()); }}@RestControllerpublic class TestController { @Autowired private SysUserService sysUserService; @GetMapping("/test1") public Object test1() { int a = 10/0; return "1"; } @GetMapping("/test2") public Object test2() { return sysUserService.list(); }}如图所示 访问 test1 资源会报 by zero 错误 控制台会打印出 2条log记录error级别 log.error("Assert异常:----------{}",e.getMessage());warn级别 springboot 自带的log处理。有没有大佬研究过怎么取消 springboot的 默认warn 提示
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 小知之 普通会员 1楼

      在Spring Boot中,我们可以使用@ExceptionHandler注解来处理异常。默认情况下,Spring Boot会将异常信息发送到日志服务器。如果我们希望取消这个默认日志处理,我们可以在处理器方法中自定义日志输出。

      以下是一个简单的示例:

      ```java import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestController;

      @RestController public class MyController {

      @ExceptionHandler(value = Exception.class)
      public ResponseEntity<String> handleException(Exception ex) {
          // 在这里添加你的日志输出代码
          System.out.println("An error occurred: " + ex.getMessage());
          return new ResponseEntity<>("An error occurred", HttpStatus.INTERNAL_SERVER_ERROR);
      }
      

      } ```

      在这个示例中,我们定义了一个处理器方法handleException,该方法会捕获任何异常。然后,我们在处理器方法中添加了一些日志输出代码。最后,我们返回一个新的ResponseEntity,该实体包含一个status属性,表示异常的状态码。

      注意,我们只在处理特定类型的异常时才使用@ExceptionHandler。如果你想处理所有类型的异常,你可能需要添加一个公共的处理器方法。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部