springboot-全局异常处理器+springboot设置自带的日志

目录

一, 全局异常处理器的应用场景

二,如何使用全局异常处理器(步骤)

三,在springboot项目中开启自带的日志,并将日志信息打印到目标文件

四,案例(demo)


一, 全局异常处理器的应用场景

例如:当使用浏览器访问我们书写的后端服务器时,如果访问报错!可能是400,405,404,415,500等问题,呈现在浏览器上显示报错信息,这样对于用户来说是不友好的

如何处理以上情况呢?

当发生异常时,服务器,可以统一接收,并通过日志记录错误信息,最终呈现给用户看到的不是报错信息


二,如何使用全局异常处理器(步骤)

1 手写全局异常处理类

注意:要使用一下注解需要导入 spring-boot-starter-web。  web起步依赖

package com.it.heima.ssmbookproject.exception;
import com.it.heima.ssmbookproject.controller.BookController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
// 全局异常处理器声明
@ControllerAdvice
public class GobaExceptionlHandle {
    // 日志记录 BookController类发生的异常
    private static final Logger logger = LoggerFactory.getLogger(BookController.class);
    // 捕获任意类型的异常
    @ExceptionHandler(Exception.class)
    // 返回类型为String,表示返回的是字符串,而不是页面
    @ResponseBody
    public String aa(Exception e) {
        System.out.println("开始记录异常!!");
        logger.error( "记录错误信息:"+e);
        return "系统繁忙,请稍后再试!!";
    }
}

三,在springboot项目中开启自带的日志,并将日志信息打印到目标文件

首先,我们清楚:springboot项目,自带一个日志 :logback

步骤

1 在项目配置文件下 打印日志信息的目标文件

这里我拿 application.properties配置文件举例

注意:在写目标文件路径时应该从 src开始,否则会显示在当前项目下

//设置打印日志信息目标文件
logging.file.name=src/main/java/com/it/heima/ssmbookproject/log/bookProject.log

关于日志级别的介绍

在日志系统中,不同的日志级别代表着不同的日志信息重要程度。常见的日志级别从低到高依次为:TRACE、DEBUG、INFO、WARN、ERROR。并且从左往右日志信息越来越简略

这里我拿 logging.level.root=error 举例

解释:

这行配置的意思是将根日志记录器的日志级别设置为 ERROR。
当根日志记录器的日志级别设置为 ERROR 时,只有 ERROR 级别的日志信息才会被输出,而 TRACE、DEBUG、INFO 和 WARN 级别的日志信息都会被过滤掉。

2 在目标类中创建日志实例

应用场景

1 如果是在单个controller类上打印日志信息

//成员变量
private static final Logger logger = (Logger) LoggerFactory.getLogger(BookController.class);
  
        //将这些写在目标方法中,在控制台只打印错误信息
        logger.error("记录错误信息:);
    

控制台:效果展示

2 如果多个controller类打印日志信息

可以写一个父类,类中创建日志实例,打印日志的方法

package com.it.heima.ssmbookproject.controller;


import ch.qos.logback.classic.Logger;
import org.slf4j.LoggerFactory;

public class BaseController {
    private static final Logger logger = (Logger) LoggerFactory.getLogger(BookController.class);
    public static void log(Exception e){
        //只打印错误信息,到目标文件
        logger.error("记录错误信息:"+e);
    }
}

四,案例(demo)

步骤

1 手写全局异常处理器

2 配置文件中配置目标文件

3 父类中创建日志实例对象,日志方法

正文

注意:日志需要的相关依赖,当成功创建spring boot时已经配置好了

1 手写全局异常处理器

package com.it.heima.ssmbookproject.exception;
import com.it.heima.ssmbookproject.controller.BookController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
// 全局异常处理器声明
@ControllerAdvice
public class GobaExceptionlHandle {
    // 捕获任意类型的异常
    @ExceptionHandler(Exception.class)
    // 返回类型为String,表示返回的是字符串,而不是页面
    @ResponseBody
    public String aa(Exception e) {
        System.out.println("开始记录异常!!");
        BookController.log(e);
        return "系统繁忙,请稍后再试!!";
    }
}

2 配置文件中配置目标文件

application.properties配置文件

logging.file.name=src/main/java/com/it/heima/ssmbookproject/log/bookProject.log

3 父类中创建日志实例对象,日志方法

package com.it.heima.ssmbookproject.controller;


import ch.qos.logback.classic.Logger;
import org.slf4j.LoggerFactory;

public class BaseController {
    private static final Logger logger = (Logger) LoggerFactory.getLogger(BookController.class);
    public static void log(Exception e){
        //只打印错误信息
        logger.error("记录错误信息:"+e);
    }
}

最后演示结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值