SpringBoot整合Log4j
2018-05-30 本文已影响89人
迷糊银儿
本次实现的主要是:SpringBoot整合Log4j ,比较简单。
step1: pom.xml文件中添加Log4j依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>
step2: 在src/main/resources 下新增日志的配置文件log4j.properties
# LOG4J配置
log4j.rootCategory=INFO, stdout, file
# 控制台输出
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
# root日志输出到文件
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.file=/data/logs/springboot-log4j-all.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
# 按不同package进行输出
# com.micai包下的日志配置
log4j.category.com.micai=DEBUG, didifile
# com.micai下的日志输出
log4j.appender.didifile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.didifile.file=/data/logs/springboot-log4j-my.log
log4j.appender.didifile.DatePattern='.'yyyy-MM-dd
log4j.appender.didifile.layout=org.apache.log4j.PatternLayout
log4j.appender.didifile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n
# ERROR级别输出到特定的日志文件中
log4j.logger.error=errorfile
# error日志输出
log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorfile.file=/data/logs/springboot-log4j-error.log
log4j.appender.errorfile.DatePattern='.'yyyy-MM-dd
log4j.appender.errorfile.Threshold = ERROR
log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout
log4j.appender.errorfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
step3: 使用log4j打印日志
@Controller
public class FileUploadController {
private Logger logger = org.slf4j.LoggerFactory.getLogger(this.getClass());
@RequestMapping(value = "/file")
public String file(){
return "uploadFile";
}
// MultipartFile是自带的上传文件的工具类
// @RequestParam("fileName") 中的参数名称同controller的参数名称保持一致
@RequestMapping(value = "fileUpload")
@ResponseBody
public String fileUpload(@RequestParam("fileName") MultipartFile multipartFile){
if(multipartFile.isEmpty())
return "请先选择要上传的文件";
String fileName=multipartFile.getOriginalFilename();
logger.info("\n");
logger.info("上传的文件名称为:"+fileName);
int fileSize=(int)multipartFile.getSize();
logger.info("上传文件的大小为:"+fileSize);
String basePath=System.getProperty("user.dir");
logger.info("项目的基础路径是:"+basePath);
String destPath=basePath+"/src/main/resources/static/pics";
logger.info("文件具体保存至:"+destPath);
File destFile=new File(destPath+"/"+fileName);
logger.info("对保存路径进行空校验");
if(!destFile.getParentFile().exists()){
destFile.getParentFile().mkdir();
}
try {
logger.info("执行保存文件操作");
multipartFile.transferTo(destFile);
logger.info("保存文件成功");
return "上传文件成功";
}catch (IllegalStateException e){
e.printStackTrace();
return "上传文件失败";
}catch (IOException e){
e.printStackTrace();
return "上传文件失败";
}
}
}