我的叫TestSoGa,你随意。

package com.springbootstudy.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(“testYes”)
public class TestSoGa {
//记得加上这个哇,这是告诉全世界,你要开始在这类里面使用日志
protected static final Logger logger = LoggerFactory.getLogger(TestSoGa.class);
@RequestMapping(“/testlog”)
public String helloworld() {
logger.info(“log开始生成”);
return “Hello world!”;
}
}

好了,运行,访问一下 @RequestMapping(“/testlog”),(当然了,我前面还有一个@RequestMapping(“/testYes”)的,别因为这个而一直访问错误了。),访问后,OK日志打印处理了,然后日志文件也生成了(本地路径的去本地系统盘路径看,绝对路径的在项目看)。

好了,就这样,我们的日志使用已经介绍完了。

接下来,结合这个日志打印,那么我们来配置全局异常捕获,这么一来,运维人员就舒服点了,去看日志,然后我们异常捕获给他做点日志处理,我们开发也不用被牵扯过去解释了。

首先, 建一个异常Handler吧,MyExceptionHandler.java。

然后紧接着,先放着吧,我们去上面的日志controller去弄点方法故意抛出点错误。

(里面方法举了2个例子。抛出了2个异常,自己看完后自己举一反三~)

package com.springbootstudy.controller;
import com.springbootstudy.pojo.TestUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpSession;
@RestController
@RequestMapping(“testYes”)
public class TestSoGa {
protected static final Logger logger = LoggerFactory.getLogger(TestSoGa.class);
@RequestMapping(“/errortest”)
public Integer ErrorTest(HttpSession session) {
String thisMethodName = new Exception().getStackTrace()[0].getMethodName();// 获得当前的方法名
String thisClassName = new Exception().getStackTrace()[0].getClassName();// 获得当前的方法名
session.setAttribute(“errorSource”,“方法名称->”+thisMethodName+" | "+“控制器名称->”+thisClassName);
System.out.println(““+thisMethodName+”***”+thisClassName);
return 100 / 0;
}
@RequestMapping(“/errortest2”)
public String ErrorTest2(HttpSession session) {
String thisMethodName = new Exception().getStackTrace()[0].getMethodName();// 获得当前的方法名
String thisClassName = new Exception().getStackTrace()[0].getClassName();// 获得当前的类名
session.setAttribute(“errorSource”,“方法名称->”+thisMethodName+" | "+“控制器名称->”+thisClassName);
String tfk= session.getAttribute(“testNULLSessionValue”).toString();
return tfk;
}
@RequestMapping(“/testlog”)
public String helloworld() {
logger.info(“log开始生成”);
return “Hello world!”;
}
}

好了,配置完这个先不用管那么多,我们(MyExceptionHandler)直接继续再复制粘贴:

package com.springbootstudy.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@ControllerAdvice
public class MyExceptionHandler {
private static Logger logger = LoggerFactory.getLogger(MyExceptionHandler.class);
@ExceptionHandler(value = Exception.class)
public void defaultExceptionHandler(HttpServletRequest req, HttpSession session,Exception e){
String errorSource= session.getAttribute(“errorSource”).toString();
//根据抓获的异常类型,做逻辑处理,并打印日志信息