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的方法中将异常抛出, 全局异常处理类捕捉, 统一处理;
网友评论