累成一条狗

Spring Boot 日志

一、日志

1、SpringBoot采用的日志

  日志分为日志抽象层与日志实现层。类似于JDBC与数据库的形式,不管连接的是什么数据库,只需将JDBC中对应的数据库信息修改即可。这里的日志抽象层是类似JDBC的效果,只需修改相应的日志实现层的信息即可。
  常用日志抽象层分类:
    JCL
    SLF4j
    jboss-logging
  常用日志实现层分类:
    Log4j
    JUL
    Log4j2
    Logback
  SpringBoot底层采用的是Spring框架,Spring默认采用JCL。但SpringBoot选用SLF4j与logBcak来实现日志的输出。

2、使用SLF4j

(1)官网地址:https://www.slf4j.org/
(2)使用手册地址: https://www.slf4j.org/manual.html
(3)手册地址中有一个HelloWorld示例:

【需要导入的jar包】
slf4j的jar包,以及其实现层的jar包。

【HelloWorld.java】
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");
  }
}

(4)常用模式:

 

3、使用 SLF4J统一不同框架的日志

(1)地址: https://www.slf4j.org/legacy.html
(2)步骤:
  step1:将系统中其他原有的日志框架先排除出去。
  step2:使用一个中间包去替换原有的jar包。
  step3:导入slf4j 以及 相关实现层的 jar 包。
(3)比如现在想要将Spring框架的日志(commons-logging)转为(SLF4J+logback)。
  首先使用 jcl-over-slf4j.jar 去替换commons-logging.jar包。然后需要导入 SLF4J与logback相关的jar包。

 

4、SpringBoot的日志

(1)SpringBoot底层使用slf4j + logback 记录日志。
(2)SpringBoot会将不同的日志框架转为slf4j(使用中间替换包,先将原jar包从依赖关系中剔除,再添加新的jar包依赖)。
  在IDEA中找到<dependencies>标签,右击选中Diagrams,接着选中 Show Dependencies,可以看到当前所有依赖信息组成的图。

 

找到日志相关信息,可以看到SpringBoot底层会将不同的日志框架转为slf4j 。

 

5、SpringBoot如何使用日志

(1)获得日志记录器,使用 LoggerFactory.getLogger()。
(2)日志的级别:
  由低到高:trace < debug < info < warn < error
  根据不同的级别输出日志信息。对于某个级别,输出比此级别高以及此级别的日志。
  其中 SpringBoot 默认使用 info 级别的信息。即 输出 info , warn, error 等日志信息。

【在test目录下的一个测试类】
package com.example.helloworld;

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 HelloworldApplicationTests {

    Logger logger = LoggerFactory.getLogger(getClass());
    @Test
    public void contextLoads() {
        logger.trace("=== trace ===");
        logger.debug("=== debug ===");
        logger.info("=== info ===");
        logger.warn("=== warn ===");
        logger.error("=== error ===");
    }

}

 

(3)设置日志打印级别:
  可以在配置文件(application.properties)中使用 logging.lever 去设置级别。

 

(4)选择日志打印的位置:
  在配置文件中,如果存在logging.file 且 文件名为 my.log, 则会输出日志到当前项目路径下的 my.log文件中。
  在配置文件中,如果存在logging.path 且文件名为 /spring/log, 则会输出到指定目录的spring.log文件中。
  在配置文件中,若上述两个都未指定,则默认输出到控制台。
  在配置文件中,若上述两个均存在,则以logging.file为主。

(5)设置日志打印的格式:
  在配置文件中,使用 logging.pattern.console 可以指定打印在控制台的日志格式。
  使用 logging.pattern.file 可以指定打印在指定文件中的日志格式。

【日志格式:】
    %d : 表示日期时间。
    %thread :表示线程名。
    %-5lever : 级别从左显示5个字符的宽度。
    %logger[50] :表示logger名字最长为50个字符,否则按照点分割。
    %msg : 表示日志消息。
    %n :表示换行符。
    
【举例:】
     logging.pattern.console = %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5lever %logger[50] -- %msg %n

 

posted on 2019-07-31 21:55  累成一条狗  阅读(823)  评论(0编辑  收藏  举报

导航