zoukankan      html  css  js  c++  java
  • 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

     运行测试类主程序

    控制台的日志格式

     

     文件中的日志格式

  • 相关阅读:
    UVa 116 单向TSP(多段图最短路)
    POJ 1328 Radar Installation(贪心)
    POJ 1260 Pearls
    POJ 1836 Alignment
    POJ 3267 The Cow Lexicon
    UVa 1620 懒惰的苏珊(逆序数)
    POJ 1018 Communication System(DP)
    UVa 1347 旅行
    UVa 437 巴比伦塔
    UVa 1025 城市里的间谍
  • 原文地址:https://www.cnblogs.com/braveym/p/14888845.html
Copyright © 2011-2022 走看看