SoringBoot日志详解

市场上的日志框架

市场上的日志框架有很多,比如JUL,JCL,Jboss-logging,logback,log4j,log4j2,slf4j等。

这些日志主要分为两个部分:

  • 日志门面(日志的抽象层):JCL,SLF4j,Jboss-logging
  • 日志实现:log4j,log4j2,logback,JUL

而在SpringBoot中,最终我们会选择SLF4j和logback这样的组合。

SLF4j的使用

在日常开发的时候,日志记录方法的调用,不应该直接调用日志的实现类,而是调用日志抽象层里面的方法。
在使用SLF4j之前需要导入SLF4j的jar和logback的实现jar。

示例:

public class HelloWorld{
	public static void main(String[] args){
		Logger logger=LoggerFactory.getLogger(HelloWorld.class);
		logger.info("Hello World!!!");
	}
}

但是在SpringBooot中会遇到如下问题:某个a项目使用的是slf4j+logback模式,但是项目中Spring使用的是commons-logging日志,Hibernate使用的是Jboss-logger。所以有时候我们需要统一日志记录
在这里插入图片描述
总结:

  1. 将系统中其他日志框架先排除出去
  2. 用中间包来代替原来的日志框架
  3. 在导入slf4j的其他实现

SpringBoot日志关系

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
</dependency>

SpringBoot使用它来做日志功能。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

在这里插入图片描述

总结:

  1. SpringBoot底层也是使用SLF4j和logback的方式进行日志记录。
  2. SpringBoot也会把其他的日志文件都替换成了SLF4j。
  3. 也使用了中间替换包
  4. 如果需要引入其他的日志框架,一定要把这个框架的默认日志文件依赖移除掉。

示例:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
	<exclusions>
		<exclusion>
			<groupId>commons-logging</groupId>
    		<artifactId>commons-logging</artifactId>
    	</exclusion>
	</exclusions>
</dependency>

日志文件的编写

logging.level.com.learn=trace      #设置显示日志的等级

#不指定路径则在当前项目下生成springboot.log日志
#也可以指定完整的路径
logging.file.name=E:/springboot.log

#在当前磁盘的根路径下创建spring文件夹和里面的log文件夹,使用spring.log作为默认文件
logging.path=/spring/log

#在控制台输出日志的格式
logging.pattern.console=%d{yyyy-mm-dd}[%thread]%-5level %logger{50} -%msg%n



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章