栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot 最简单的日志打印,输出日志文件 及全局异常捕获处理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot 最简单的日志打印,输出日志文件 及全局异常捕获处理

#将日志文件生成到系统盘路径

logging.path=F:logtestlog

#简单设置一下日志等级

logging.level.web=info

#将日志文件生成到项目绝对路径

#logging.file=logmyboot.log

里面的配置作用就不用解释了吧,你看我的注释,已经简单介绍了。

好了,开始使用。

新建一个controller:

我的叫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();

//根据抓获的异常类型,做逻辑处理,并打印日志信息

if(e instanceof java.lang.NullPointerException){

logger.info(“空指针异常—”+"—出错的方法是:"+errorSource);

}

if(e instanceof java.lang.ArithmeticException){

logger.info(“使用0作为分母—”+"—出错的方法是:"+errorSource);

}

e.printStackTrace();

System.out.println(“全局异常捕获中”);

}

}

好了,以上全局异常捕获及简单的配合日志打印处理已经完毕了,我下面也介绍下这个全局异常捕获:

先是,controller里面的方法,我们代码走读吧,

就看这个方法吧,

@RequestMapping("/erro

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

rtest2")

public String ErrorTest2(HttpSession session) {

String thisMethodName = new Exception().getStackTrace()[0].getMethodName();// 获得当前的方法名

String thisClassName = new Exception().getStackTrace()[0].getClassName();// 获得当前的类名

session.setAttribute(“errorSource”,“方法名称->”+thisMethodName+" | "+“控制器名称->”+thisClassName);

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/658913.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号