SpringBoot日志介绍目录
1. 常见的日志框架
日志门面(抽象层) | 日志实现 |
---|---|
slf4j ,JCL JBoss-logging | log4j ,log4j2 ,Logback ,JUL |
从上面的 抽象层中选一个,再从实现中选一个,组成一个完整的日志;
日志门面的选取:JCL是一款14年就不再更新了的,JBoss-logging我就不是很清楚缺陷了,网上也没有太多的介绍;
日志门面选择slf4j,日志实现选择logback;
2. 将所有的框架全部使用slf4j作为日志框架
由于每一个框架都有他自己的核心包,这时候如上图,可以将一些核心包替换成slf4j中的包,这样就可以在不同的框架中使用slf4j;
一:即先将原先日志框架先去除;
二:再将slf4j中的中间包替换掉原有框架;
三:使用slf4j完成自己需要的日志的实现;
以上就是实现统一日志的思想;
3. SpringBoot中的日志
在SpringBoot中日志一般是由spring-boot-start-logging负责,如下图;
可以直接从这里跳转到详细的依赖位置,找到具体的依赖;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>2.3.3.RELEASE</version>
<scope>compile</scope>
</dependency>
这里面还有两个依赖,jul-to-slf4j
,log4j-to-slf4j
,这就是最开始介绍的日志框架统一所需要的几个jar包;SpringBoot自带了;
4. 日志的简单使用
由于SpringBoot已经默认打开了日志,所以我们可以直接使用;(从上面的那个依赖图中就可以看到日志框架了);
class SpringConfigDemoApplicationTests {
//定义一个日志对象;
Logger logger = LoggerFactory.getLogger(getClass());
@Test
void contextLoads() {
//下面是日志输出的一些方式;
logger.trace("第一个trace");
logger.info("info信息");
logger.debug("debug信息");
logger.warn("debug信息");
logger.error("error信息");
}
}
除此之外,在配置文件中也可以使用一些配置,对日志的输出位置,多少,详细等进行修改;
#设置日志最接受时的最低权限,默认的话时root,也就是所有的信息全部显示;
logging.level.cn.dxs.spring_config_demo=debug
#指定日志输出的文件位置
#除了下面的,还可以使用logging.file.name(会在当前工程下创建一个日志文件)
#logging.file.path会在当前工程下创建一个logging的目录,然后自己创建一个Spring.log的文件
#这里面的spring.log文件是没法换的,至少设置路径没有用,应该是个固定的默认路径;
logging.file.path=logging
#将日志按自己的格式输出;
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} -%msg %n
在其中,关于输出格式有这几种写法;
%d:意味着日期时间,比如yyyy-MM-dd HH:mm:sss,年月日,时分秒;
%thread:表示当前的线程名;
%-5level:表示级别从左显示5个字符的宽度
%logger(50):表示最多显示logger的最长名字是50;
%msg:表示日志信息;
%n:表示换行符;
运行的结果:(只看控制台)
介绍了这么多如何修改配置,那么基本配置到底在哪里?
首先我目前是以2.3.3为基础,所以可以先找到这么一个依赖org.springframework.boot:spring-boot2.3.3.RELEASE
;在这个依赖下面的org.springframework.boot
里面有一个logging的文件夹;如下图,base.xml是它的基本配置;
下面是default.xml的内容:
简单的就从上面两张图就可以看出,不仅默认输出是控制台,而且还有它自己的输出格式,基本输出的级别也是info;文件保存日志的时候默认是最大10MB;
4.1 如何使用自定义的日志配置文件
我也去官网转了一下,如果需要使用自定义的配置文件,那么可以如下命名,放置的位置可以放在资源文件(resource)下:
而且官方文档推荐的是使用名字带有spring的配置文件名,简单的解释就是使用带有spring配置文件的名字拥有的功能会更加多,比如<springProfile name="">,和前面介绍的profile环境类似,也是根据不同的环境执行不同的代码;
官方文档的配置更多
至于说到自定义的配置文件,讲实话没有两把刷子,我还是去网上找吧,但是实际上官方文档里面的大部分配置都是可以写的;
5. 切换日志框架
就是将slf4j的依赖去除,然后添加其它的日志框架依赖,并且将这些日志框架需要的配置文件放在资源(resource)文件夹下;这样的话就可以了;到时候日志框架会自动加载自己需要的配置文件;
上面那张图是SpringBoot内嵌的一些日志框架(启动器),默认的是slf4j+logback;