SpringBoot日志
SpringBoot是快速构建Spring应用的框架.
SpringBoot实现了自动装配,只需要我们导入指定的需要的包,并且声明必要的配置就可以使用了.
但是各个组件使用的日志组件不一致,会导致在输出日志的时候很乱了
SpringBoot解决问题
首先我们在我们项目中使用pom.xml引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
spring-boot-starter-parent中引入了
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.0.RELEASE</version>
</parent>
重点的约束信息和控制信息都在spring-boot-dependencies中
我们详细看一下
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-console</artifactId>
<version>${activemq.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
举例activeMq,在这个pom中他剔除了Active的loggin日志包
但是,这样的话在运行的时候就会报错,classnotfound
springboot在这里引入了
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>${log4j2.version}</version>
</dependency>
这样通过实现和log4j一样的包路径和类名,在加载类的时候替换成为实现的slf4j的实现类,完成日志框架的替换
同样的还有
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
Spring的日志使用了,spring的log-starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>${spring-boot.version}</version>
</dependency>
其中默认使用的日志组件是
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
logback
至于日志输出的格式
我们可以在源码中看到