自己编写Java全局异常处理器

一、基础知识

1、当controller抛出exception后,由全局异常处理器捕获处理;

2、主要用来打印异常到控制台和日志文件,发送邮件和短信到相关负责人,跳转到错误页面;

3、 logger对象为slf4j的事例,因为log4j为slf4j的实现,使用slf4j方便以后切换其他的日志实现方式;

4、全局异常处理器写在前端,是在给客户返回页面前一步对异常的捕获处理操作;

5、自己写的全局异常处理器需实现HandlerExceptionResolver接口,并重写resolveException方法;

二、编写步骤

1、pom.xml文件中引入以下jar包:


	1.6.4
	

org.slf4j
	slf4j-log4j12
	${slf4j.version}

查看maven目录结构:

 自己编写Java全局异常处理器_第1张图片

2、在resources目录下加入log4j.properties的配置文件,且名字为log4j.properties,这样logger会自动调用,否则得手动配置

如:

自己编写Java全局异常处理器_第2张图片

log4j.properties的配置文件内容为:

#定义日志的级别:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别
#开发可以定义DEBUG级别的日志,上线定义INFO级别的日志
log4j.rootLogger=INFO,A3,STDOUT

#设置控制台打印
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=[%p] [%l] %10.10c - %m%n

#设置日志文件循环打印,当文件满1024KB后,就重新建立一个文件并打印日志
log4j.appender.A3=org.apache.log4j.RollingFileAppender
log4j.appender.A3.file=logs/server.log
log4j.appender.A3.MaxFileSize=1024KB
log4j.appender.A3.MaxBackupIndex=10
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=\n\n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n

3、编写全局异常处理器:

package com.taotao.exception;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class GlobalExceptionResolver implements HandlerExceptionResolver {

    private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionResolver.class);

    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception e){
       logger.info("我是info级别的异常");
       logger.debug("我是debug级别的异常");
        //控制台打印异常
        e.printStackTrace();
        //向日志文件中写入异常
        logger.error("发生异常了..",e);
        //发邮件jmall
        //发短信
        //展示错误页面
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("message","网络故障,请稍后再试试吧!");
        modelAndView.setViewName("error/exception");
        return modelAndView;
    }
}

 4、测试

即可在控制台和日志文件中查看打印的内容;或者在自己的类里面打印logger日志也可以打印到控制台和日志文件。

 

 

======以下于你或许是个好消息======

 

好消息就是:欢迎访问下面的博客网站哈哈哈......


网站名称:Java学习笔记网 (点击进入)

url:https://www.javaxxbj.com/ (点击进入)

网站特点:

  1. java主要网站的导航目录
  2. 你可以记录自己的博客,并可以控制显示和隐藏,可利于管理啦!!!
  3. 可以添加收藏各个网站的链接!!!
  4. 甚至也可以文章收藏,点赞,关注,查看我的消息等功能哦!!1

看一小点点的截图:

或可一试哦!

你可能感兴趣的:(log4j)