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

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

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

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

我还通过一些渠道整理了一些大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。

新鲜出炉的蚂蚁金服面经,熬夜整理出来的答案,已有千人收藏

还有专门针对JVM、SPringBoot、SpringCloud、数据库、Linux、缓存、消息中间件、源码等相关面试题。

新鲜出炉的蚂蚁金服面经,熬夜整理出来的答案,已有千人收藏

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
望能帮助到大家。**

[外链图片转存中…(img-g0OIoIaU-1711820587348)]

还有专门针对JVM、SPringBoot、SpringCloud、数据库、Linux、缓存、消息中间件、源码等相关面试题。

[外链图片转存中…(img-AvTAraNY-1711820587349)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值