SpringBoot - 日志

作者: BzCoder | 来源:发表于2018-05-08 14:56 被阅读78次

    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日志的内容就简单的学习到这里,还有很多知识点没有深入的去探究,待以后在开发的过程中再深入研究。如果你喜欢的话可以点一个喜欢哦。

    相关文章

      网友评论

      本文标题:SpringBoot - 日志

      本文链接:https://www.haomeiwen.com/subject/xjgbrftx.html