百里登风

导航

3、SpringBoot与日志

 

 

1、如何在系统中使用SLF4j

    以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层的方法。

   给系统里面导入slf4j的jar和logback的实现jar

   

 

 

 

 

 

 

 

 

2、遗留问题

    a(slf4j+logback): Spring(commons-logging)、Hibernate(jboss-logging)、MyBatis

      统一日志记录,即使是别的框架和我一起使用slf4j进行输出

 

 

 

 

      如何让系统中所有的日志都统一到slf4j:

           1、讲系统中其他日志框架先排除出去;

           2、用中间包来替换原有的日志框架;

           3、我们导入slf4j其他的实现。

 

 

3、SpringBoot日志关系

      我们新建一个springboot项目工程

       首先在pom文件引入依赖

 

       

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

 

 

springboot底层依赖关系:

 

 

总结:

       1、SpringBoot底层也是使用slf4j+logback的方式进行日志记录;

       2、SpringBoot也把其他的日志都替换成了slf4j;

       3、中间替换包?

 

     4、如果我们要引入其他框架,一定要把这个框架的默认日志依赖移除掉。

     Spring框架用的是commons-logging; 

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

 

 SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉。

 

 

4、日志的使用

     SpringBoot默认帮我们配置好日志

    我们编写测试主程序

  

 

 

 

package com.atguigu.springboot;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBoot03LoggingApplicationTests {

    //记录器
    Logger logger = LoggerFactory.getLogger(getClass());
    @Test
    public void contextLoads() {
        //System.out.println();

        //日志的级别;
        //由低到高   trace<debug<info<warn<error
        //可以调整输出的日志级别;日志就只会在这个级别以以后的高级别生效
        logger.trace("这是trace日志...");
        logger.debug("这是debug日志...");
        //SpringBoot默认给我们使用的是info级别的,没有指定级别的就用SpringBoot默认规定的级别;root级别
        logger.info("这是info日志...");
        logger.warn("这是warn日志...");
        logger.error("这是error日志...");

    }

}

 

 

运行测试主程序:

     

 

 

可以看出,并没有打印所有日志,我们调整一下日志的等级

 

 

 

再次运行测试类主程序:

 

 

 

 

 

 

 

修改配置文件:

 

 

 

server.port=8088
logging.level.com.atguigu=trace

# 不指定路径在当前项目下生成springboot.log日志
# 可以指定完整的路径;
#logging.file=G:/springboot.log
# 在当前磁盘的根路径下创建spring文件夹和里面的log文件夹;使用?spring.log 作为默认文件
logging.path=/spring/log

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

 

 运行测试类主程序

控制台的日志格式

 

 

 

 文件中的日志格式

 

 

posted on 2021-06-16 16:57  百里登峰  阅读(517)  评论(0编辑  收藏  举报