美文网首页
springboot集成log4J及全局异常处理

springboot集成log4J及全局异常处理

作者: 毛于晏 | 来源:发表于2018-11-13 13:49 被阅读44次

springboot说白了, 其实就是对springMVC的一个大集合, 包含了许多我们在开发中使用的工具,并且都是默认配置; 但是有时候springboot自己默认的工具并不是我们自己习惯使用的, 这个时候我们就需要自己来修改他一些默认配置;

1.集成log4J

springboot自己默认的日志框架是logging, 由于自己一直在使用log4J也就习惯了; 现在我们先需要将默认依赖给删除掉

去除默认日志框架

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.1.0.RELEASE</version>
<!-- 去除默认日志框架依赖 -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

添加相关依赖

<!-- log4j日志 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
        </dependency>

相关依赖加好了, 我们可以愉快的编写log4J的配置文件啦
↓↓↓
log4J配置文件
文件放置位置: /main/resources
和你的yml文件放在同一级目录就好啦,

# LOG4J配置
log4j.rootCategory=error,stdout
# 控制台输出
#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

#每天生成一个新的日志文件
log4j.appender.stdout=org.apache.log4j.DailyRollingFileAppender
#日志输出位置
log4j.appender.stdout.File=err.log
log4j.appender.stdout.encoding=UTF-8
log4j.appender.stdout.DatePattern='.'yyyyMMdd
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %m%n


#访问数据库日志输出
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

这些是我自己开发中使用到的, 就粘上面啦, 根据个人情况复制粘贴; ←, ←

2.全局异常处理

吐槽下哪些写博客的人, 好多不把导包写进去, 那么多包谁知道导哪个, 没道德⊙,⊙

package cn.cooplan.data_statistical.exception;

import cn.cooplan.data_statistical.constant.Constant;
import cn.cooplan.data_statistical.util.ResultUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;

/**
 * 全局的异常处理类
 * @Author MaoLG
 * @Date 2018/11/13  11:45
 */
@ControllerAdvice
@ResponseBody
public class ExceptionHandler {

    //日志对象
    private static final Logger logger = LoggerFactory.getLogger("log4j.properties");

    /**
     * 异常处理
     * @param request
     * @param exception
     * @return
     * @throws Exception
     */
    @org.springframework.web.bind.annotation.ExceptionHandler
    public Object allExceptionHandler(HttpServletRequest request,
                                      Exception exception) throws Exception{
        String contextPath = request.getContextPath();

        //将异常对象写入日志内
        logger.error(exception.getMessage(), exception);
        //返回异常信息, 直接返回给客户端
        return new ResultUtil(Constant.ERROR, null);
    }
}

在controller的方法中将异常抛出, 全局异常处理类捕捉, 统一处理;

相关文章

网友评论

      本文标题:springboot集成log4J及全局异常处理

      本文链接:https://www.haomeiwen.com/subject/kmfczftx.html