一、引入Log4j依赖
Spring Boot默认的日志框架为Logback,所以在引入Log4j之前,需要先排除该包的依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 排除自带的日志框架Logback -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version><!-- 必须指定版本 -->
</dependency>
二、添加配置文件
在src/main/resources目录下加入log4j.properties配置文件,并进行配置。
log4j.rootLogger=DEBUG,console,FILE
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.threshold=INFO
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [%5p] - %c -%F(%L) -%m%n
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.Append=true
log4j.appender.FILE.File=F://log4j.log
log4j.appender.FILE.Threshold=INFO
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [%5p] - %c -%F(%L) -%m%n
log4j.appender.FILE.MaxFileSize=10MB
如果配置文件的名字不是log4j.properties,则会报错。
log4j:WARN No appenders could be found for logger (org.springframework.boot.devtools.settings.DevToolsSettings).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
三、日志输出
package com.peter.springbootfirstdemo.web;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.Date;
@RestController
public class HelloController {
private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
@RequestMapping(value = "sayHello", method = RequestMethod.GET)
public String sayHello() {
logger.info("Hello Spring Boot!");
return "Hello Spring Boot!";
}
@RequestMapping(value = "getTime", method = RequestMethod.GET)
public String getTime() {
String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
logger.info(time);
return time;
}
}
四、日志输出效果
2018-04-28 17:04:40 [ INFO] - org.springframework.web.servlet.DispatcherServlet -FrameworkServlet.java(509) -FrameworkServlet ‘dispatcherServlet’: initialization completed in 14 ms
2018-04-28 17:04:40 [ INFO] - com.peter.springbootfirstdemo.web.HelloController -HelloController.java(23) -Hello Spring Boot!
2018-04-28 17:04:41 [ INFO] - com.peter.springbootfirstdemo.web.HelloController -HelloController.java(23) -Hello Spring Boot!
2018-04-28 17:04:54 [ INFO] - com.peter.springbootfirstdemo.web.HelloController -HelloController.java(30) -2018-04-28 17:04:54
2018-04-28 17:04:56 [ INFO] - com.peter.springbootfirstdemo.web.HelloController -HelloController.java(30) -2018-04-28 17:04:56