• 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

     运行测试类主程序

    控制台的日志格式

     

     文件中的日志格式

  • 相关阅读:
    ubuntu之路——day8.4 Adam自适应矩估计算法
    ubuntu之路——day8.3 RMSprop
    ubuntu之路——day8.2 深度学习优化算法之指数加权平均与偏差修正,以及基于指数加权移动平均法的动量梯度下降法
    ubuntu之路——day8.1 深度学习优化算法之mini-batch梯度下降法
    ubuntu之路——day7.4 梯度爆炸和梯度消失、初始化权重、梯度的数值逼近和梯度检验
    redis作为mysql的缓存服务器(读写分离)
    阿里云服务器上配置并使用: PHP + Redis + Mysql 从配置到使用
    小程序开发测试教程
    使用PHP并发执行任务–curl_multi应用
    PHP返回变量或数组的字符串表示:var_export()
  • 原文地址:https://www.cnblogs.com/braveym/p/14888845.html
Copyright © 2020-2023  润新知