SpringBoot默认采用的是SLF4J(简单日志门面Simplme Logging Facade for java)+logback的组合。
一.如何使用SLF4J
SLF4J官方网站上的示例代码:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
PS:我们使用日志框架时不应该调用实现类,而是应该调用日志抽象层的方法。
以下为SLF4J配合各种实现框架的使用方法:
使用方法
二.遗留问题
由于我们系统中各个框架使用的日志系统是不同的,例如Spring(commons-logging),Hibernate(jboss-logging)...我们为了统一日志框架,就要做出相应处理,我们可以登录SLF4J官网查看解决方案。
大体思路:
1.先将框架中原有日志系统剔除出去。
2.利用中间包引入,防止框架出错。
3.利用中间包导入SLF4J的实现 SpringBoot的日志框架结构
在老版本的SpringBoot中我们可以看到以下代码剔除Spring自带的commons-logging
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.8.RELEASE</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
在新版本SpringBoot(2.0.1.RELEASE)中已经经过修改,去除了exclusion语句
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.5.RELEASE</version>
<scope>compile</scope>
</dependency>
三.日志使用
具体的使用方法可以在SpringBoot官方文档第26章查看,官方文档写的很细很棒棒!下面再放一些实际在代码中的使用与配置仅供参考。
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootLoggingApplication {
Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void contextLoads()
{
//日志的级别,由低到高
//调整输出日志级别
logger.trace("跟踪轨迹");
logger.debug("调试信息");
//SpringBoot默认输出(Root级别)info界别以上的日志
logger.info("自定义信息");
logger.warn("警告");
logger.error("错误信息");
}
}
我们在properties文件可以对log进行配置。
#指定日志输出级别
logging.level.com.springboot.SpringBootLoggingApplication = trace
#输出日志文件
logging.file=d:/springboot.log
# 输出日志路径,目录为当前磁盘根目录
logging.path=/spring/log
#输出日志格式
logging.pattern.console=xxx
logging.pattern.file=xxx
四.组件替换方案
在官方中也给我们提供了不同的组件方案。有log4j2与logging的替换,jetty与tomcat的替换。
Table 13.3. Spring Boot technical starters
Name | Description | Pom |
---|---|---|
spring-boot-starter-jetty |
Starter for using Jetty as the embedded servlet container. An alternative to spring-boot-starter-tomcat
|
Pom |
spring-boot-starter-log4j2 |
Starter for using Log4j2 for logging. An alternative to spring-boot-starter-logging
|
Pom |
spring-boot-starter-logging |
Starter for logging using Logback. Default logging starter | Pom |
spring-boot-starter-reactor-netty |
Starter for using Reactor Netty as the embedded reactive HTTP server. | Pom |
spring-boot-starter-tomcat |
Starter for using Tomcat as the embedded servlet container. Default servlet container starter used by spring-boot-starter-web
|
Pom |
spring-boot-starter-undertow |
Starter for using Undertow as the embedded servlet container. An alternative to spring-boot-starter-tomcat
|
Pom |
那么有关于SpringBoot日志的内容就简单的学习到这里,还有很多知识点没有深入的去探究,待以后在开发的过程中再深入研究。如果你喜欢的话可以点一个喜欢哦。
网友评论