携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第25天,点击查看活动详情
-
springboot整合log4j日志记录
1、在src/main/resources下面新建一个名为log4j.properties的文件:
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=info, stdout
2.在pom文件中添加log4j依赖的jar包:
<!-- springboot 整合log4j -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
3.在controller中我们可以引入日志,进行打印,
@Controller
public class JspController {
private static final Logger logger = LoggerFactory.getLogger(JspController.class);
//引入日志时需要导入的Jar是:import org.slf4j.Logger;和import org.slf4j.LoggerFactory;
@RequestMapping("/jspIndex")
public String jspIndex() {
logger.info("springboot 整合Log4j");
return "jspSpringboot";
}
}
4.这样我们再去访问controller时就会在控制台打印log:
-
springboot整合全局捕获异常
首先要保证启动类能够扫到异常处理类。
编写全局捕获异常处理类:
package wyh.error;
import java.util.HashMap;
import java.util.Map;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
*
* <p>Title: GlobalException</p>
* <p>Description:全局捕获异常 异常返回1:json格式,2:返回页面 </p>
* @author wyh
* @date Dec 2, 2018
*/
@ControllerAdvice//(basePackages="wyh.controller")如果不写basePackages,默认是扫描到所有@Controller和@RestController//springboot的异常切入点,basePackages定义扫包范围,一般扫controller,当定义的那个包中发生了异常,就会执行这个类。
public class GlobalException {
@ExceptionHandler(RuntimeException.class)//拦截错误
@ResponseBody//返回json.如果是返回视图,就用ModelAndView
public Map<String, Object> errorResult(){
Map<String, Object> map = new HashMap<String, Object>();
map.put("errorCode", "500");
map.put("errorMsg", "系统错误");
return map;
}
}
编写异常:
package wyh.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ErrorController {
@RequestMapping("/getUser")
public String getUser(int i) {//参数在访问路径后面直接用?连接
int j = 1/i;
return "success"+j;
}
}
目录结构:
启动测试:
此时出现异常时,控制台就不会抛出异常了。