目录
1.SpringBoot中日志介绍
2.SpringBoot中输出日志
3.SpringBoot中日志级别
4.SpringBoot中输出日志到文件
5.SpringBoot中修改日志输出格式
6.SpringBoot中切换日志框架和自定义日志配置
1.SpringBoot中日志介绍
项目开发时,日志的作用是绝对不可忽略的。记录好日志,是排除bug的良药。日志的作用:
- 记录一切:日志帮助我们记录程序功能都干了什么,无论是正常的输入输出还是出现异常,都可以用日志记录;
- 定位问题:日志可以帮助程序员调试问题,帮助测试人员定位问题;
- 记录分析用户行为:统计分析师用来记录用户的一些行为,用于分析用户的习惯和商业价值;
- 备份和还原实时数据:数据库工程师用来作为一种特殊的数据库。
SpringBoot采用了 slf4j
+logback
的日志框架组合形式,并且SpringBoot也对JUL、log4j2、Logback提供了默认配置。每个日志框架,都默认配置了控制台输出,并且还提供了日志文件输出功能。因此只要进行相关的设置,就可以实现日志框架的切换。
虽然 SpringBoot 适配了多种日志框架,但一般情况下,我们不会切换掉 Logback,因为 Logback 相对于其他的日志框架速度更快,占用内存更少。
2.SpringBoot中输出日志
@Configuration
public class ToolBeanConfig {
private final Logger log= LoggerFactory.getLogger(ToolBeanConfig.class);
@Bean
public SMS sms() {
log.trace("测试日志-级别trace");
log.debug("测试日志-级别debug");
log.info("测试日志-级别info");
log.warn("测试日志-级别warn");
log.error("测试日志-级别error");
return new SMS();
}
}
另一种更为简洁方式是,使用Lombok的注解,就可以直接使用log
对象来打印日志:
@Configuration
@Slf4j
public class ToolBeanConfig {
@Bean
public SMS sms() {
log.trace("测试日志-级别trace");
log.debug("测试日志-级别debug");
log.info("测试日志-级别info");
log.warn("测试日志-级别warn");
log.error("测试日志-级别error");
return new SMS();
}
}
3.SpringBoot中日志级别
上述提到SpringBoot对日志框架进行了默认配置,所以在SpringBoot中我们不需要做任何设置,SpringBoot默认配置好了日志, 只要启动 SpringBoot 项目就会在控制台输出日志信息。如下图所示:
并且在SpringBoot中,默认日志级别为info
,这样info
级别以下的debug
和trace
日志信息都不会输出。但我们可以在application.properties
配置文件中调整日志级别:
#日志级别大小:trace < debug < info < warn < error
#修改指定包的日志级别
logging.level.cn.korb1n.springboot_project.config = trace
#修改整个项目的日志级别,不建议修改,因为级别低的日志非常多。
#logging.level.root = info
修改日志级别为最低trace
后,输出了所有级别的日志:
4.SpringBoot中输出日志到文件
默认情况下,Spring Boot将日志输出到控制台,不会写到日志文件。但我们仍然可以通过在application.properties
配置文件来配置:
#输出日志到项目根目录下的springboot.log文件中
logging.file.name=springboot.log
#输出日志到项目所在磁盘的/springboot/log文件夹中的spring.log文件中
#logging.file.path=/springboot/log
注意:当两种方式都存在时,采用的是logging.file.name
方法,所以推荐name方法,name方法也可以指定目录,只要在前面指定路径即。
5.SpringBoot中修改日志输出格式
#修改控制台日志输出的格式,以下方法无法修改日志文件的输出格式
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
#修改日志文件中日志的输出格式
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} >>> [%thread] >>> %-5level >>> %logger{50} >>> %msg%n
日志输出格式说明:
%d 输出日期时间,
%thread 输出当前线程名,
%-5level 输出日志级别,左对齐5个字符宽度
%logger{50} 输出全类名最长50个字符,超过按照句点分割
%msg 日志信息
%n 换行符
6.SpringBoot中切换日志框架和自定义日志配置
如果我们不想使用SpringBoot的默认日志框架,只需要在resources
资源文件下放上每个日志框架自己的配置文件即可,SpringBoot就会识别到使用对应配置文件的日志框架,并加载其中的日志配置:
如选用Logback日志框架,则直接创建logback.xml
配置文件放到resources
资源目录下,并在logback.xml
配置文件中参考logback官方文档进行配置即可完成切换和生效。