springcloud之logback-spring打印异常信息
最近打算把项目部署到虚拟机上进行测试,发现没有报错信息,后来研究了下,项目里面几乎都使用了try...catch,这就导致输出的日志里面没有异常信息,下面直接上代码。import org.apache.commons.lang.exception.ExceptionUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;...
·
最近打算把项目部署到虚拟机上进行测试,发现没有报错信息,后来研究了下,项目里面几乎都使用了try...catch,这就导致输出的日志里面没有异常信息,下面直接上代码。
logback-spring.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--设置存储路径变量-->
<property name="LOG_HOME" value="/logs"/>
<!--控制台输出appender-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!--设置输出格式-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<!--设置编码-->
<charset>UTF-8</charset>
</encoder>
</appender>
<!--文件输出,时间窗口滚动-->
<appender name="timeFileOutput" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志名,指定最新的文件名,其他文件名使用FileNamePattern -->
<File>${LOG_HOME}/lightSystemMan/out.log</File>
<!--文件滚动模式-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名,可设置文件类型为gz,开启文件压缩-->
<FileNamePattern>${LOG_HOME}/lightSystemMan/info.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<!--按大小分割同一天的-->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!--输出格式-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<!--设置编码-->
<charset>UTF-8</charset>
</encoder>
</appender>
<!--指定基础的日志输出级别-->
<root level="INFO">
<!--appender将会添加到这个loger-->
<appender-ref ref="console"/>
<appender-ref ref="timeFileOutput"/>
</root>
</configuration>
application.yml配置
logging: config: classpath:logback-spring.xml
java代码设置
import org.apache.commons.lang.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
//引入的包
private static final Logger logger = LoggerFactory.getLogger(AssetsManagementController.class);
//在每一个try...catch的方法上加上@ExceptionHandler(Exception.class)注解
@ExceptionHandler(Exception.class)
@RequestMapping("/queryTerminal")
public JsonResult queryTerminal(@RequestParam Map<String, Object> params){
IPage page=null;
try {
page=assetsManagementService.queryTerminal(params);
}catch (Exception e){
// e.printStackTrace();
//将异常打印换成错打印
logger.error(ExceptionUtils.getFullStackTrace(e));
Map map=new HashMap();
map.put("msg","程序异常");
map.put("flag",false);
return new JsonResult(map);
}
return new JsonResult(page);
}
@ExceptionHandler:统一处理某一类异常,从而能够减少代码重复率和复杂度
更多推荐
已为社区贡献1条内容
所有评论(0)