前言
在Spring Boot 中,日志一般使用slf4j+logback的组合,slf4j是一个日志接口,而logback则是一种具体实现。 Spring Boot中内置了logback,所以我们直接使用即可。
进入pom.xml
文件,右键->Maven->show Dependencies
可以看到Spring Boot 相关的依赖关系。
初步使用logback
只需要通过LoggerFactory
类获取logger
对象即可使用。
@RestController
public class IndexController {
private Logger logger= LoggerFactory.getLogger(getClass());
@RequestMapping("logging")
public String index()
{
logger.info("这是一条info");
logger.error("这是一条error");
logger.debug("这是一条debug");
logger.warn("这是一条warn");
return "index";
}
}
对http://localhost:8080/logging
进行访问,查看打印信息
可以看到并没有打印出来debug level
级别的日志信息。其实在logback
中,默认是打印debug
级别的日志的,但是Spring Boot
给我们自动装配了相关配置。
当然,与其他的依赖一样,假如我们不满意Springboot的一些配置,我们可以自己去配置。
在application.properties中配置logback
logging.level.org.springframework.web=INFO
logging.level.com.example.springbootlogback.IndexController=DEBUG
logging.file=logs/spring-boot-logging.log
我们指定了日志级别为debug
,所以可以输出debug级别的信息。
同时,我们还指定了日志文件存放的位置,日志将会自动打印到相关目录,生成.log文件
在xml文件中配置logback
尽管我们前面可以在application.properties
文件中对logback进行自定义配置,但是过于多的依赖配置,可能会导致该文件过于庞大。
Spring Boot允许我们在资源目录创建一个logback-spring.xml
的配置文件来配置logback,当然你也可以通过创建一个别名配置文件,但是需要在application.properties
中通过指定logging-config来指定你这个别名配置文件。
我们还是使用官方推荐的命名logback-spring.xml
配置如下
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<logger name="com.example.springbootlogback.IndexController" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</logger>
</configuration>
我们引入了base.xml
,这个xml文件其实就是Spring Boot的默认配置。我们要做的就是在默认配置的基础上进行自定义配置,指定IndexController的级别是DEBUG
我们将application.properties
中的配置删掉,再次测试http://localhost:8080/logging
,可以看到,DEBUG级别的日志信息可以被打印出来。