目录
三,在springboot项目中开启自带的日志,并将日志信息打印到目标文件
一, 全局异常处理器的应用场景
例如:当使用浏览器访问我们书写的后端服务器时,如果访问报错!可能是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);
}
}
最后演示结果