Spring Boot默认使用的日志框架是slf4j和logback,其中slf4是提供了一个统一的实现接口,logback则是实际的实现。另外,Spring Boot也是支持其他的日志框的。
而Spring Boot中有许多其他的模块使用的是其他的日志框架,对此slf4j提出了解决方案,那就是在原本的基础上面再加上一层,做一个适配,这样就可以了。
同样,尽管在应用的时候是使用的slf4j,也可以添加一个适配层从而使用其他的日志框架,包括log4j、jul等。
具体的可以去看slf4j的官方文档:传送门,这个对上面的各种情况都有详细的说明,想要切换Spring Boot使用的日志模块,参考其官方文档切换依赖就可以了。
配置
在这一块同样有官方的文档:传送门,基本上列表到了常见的各种操作,然后我这里就只写几种常用的:
1、调整日志输出级别
这个开头是logging.level
后面跟包名,指定该包下面所有类的日志输出级别
# 调整日志的输出级别
logging.level.*=trace
logging.level.com.example.demo.config=info
2、设置日志的输出格式
输出到控制台的日志可以自定义颜色
# 指定输出到控制台的日志的格式
logging.pattern.console=
# 指定输出到文件的日志的格式
logging.pattern.file=
# 指定时间的输出格式
logging.pattern.dateformat=
3、设置输出到文件位置
如果都设置的情况下,logging.file.name
的优先级更高一点,都可以带着路径和名字,如果只设置了文件的路径,那日志文件的名字默认会是spring.log。
另外就是,默认情况下,一个日志文件最大为10M,如果超过了那就会自动分割。
# 设置输出的日志文件的名字
logging.file.name=
# 设置输出的日志文件的路径
logging.file.path=
# 设置日志文件的最大大小
logging.file.max-size=
4、自定义配置
Spring Boot支持我们以使用的日志的配置文件的形式进行额外的配置,直接放在当前项目的resource文件夹下面就行了,文件的名字和日志框架的原本配置的一样就行,其他的可以参考前面的官方文档。
使用
如下是一个小例子,在访问主页的时候就会有日志输出,需要注意的是,Logger类是来自slf4j的包下面,不同的框架使用了好几个不同的日志框架,一不小心就容易搞混。
@Controller
public class UserController {
Logger logger = LoggerFactory.getLogger("UserController");
@ResponseBody
@RequestMapping({"/", "/index"})
public String index() {
logger.info("to index");
return "Hello word";
}
}
另外就是,logger有很多的方法,想要输出不同级别的日志直接使用对应名称的方法就可以了。
另外就是,日志的输出支持使用占位符:
logger.info("primaryDataSource initialization primaryDataSourceType: {}.", primaryDataSourceType.toString());
使用{}当做占位符,然后按顺序进行替换。