------spring boot 与日志------

  日志框架:

  springboot 尚桂谷学习笔记03-LMLPHP

  市面上的日志框架:

    jul jcl jboss-logging logback log4j log4j2 ......

  springboot 尚桂谷学习笔记03-LMLPHP

  左边一个门面 (抽象层),右边来选择一个选项;

  日志门面选择:SLF4j

  日志实现:Logback

  spring boot :底层是spring 框架,spring底层默认使用 jcl;

    spring boot 选择 slf4j 和 logback

  如何使用 SLF4j

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

  应该给系统加入SLF4j的 jar  以及 logback 的实现 jar

  https://www.slf4j.org/manual.html

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");
}
}

  SLF4J 使用图例:使用log 需要导入哪jar等

springboot 尚桂谷学习笔记03-LMLPHP

  每个日志实现框架都有自己的配置文件, 使用slf4j后 配置文件还是做成日志实现框架的配置文件

  遗留问题:

  a项目 (slf4j + logback): srping(common-logging, Hibernate(jboss-logging), mybatis 。。。。。。)

  统一日志记录 即使是别的框架和我一起统一使用slf4j 

  如何实现 下图:将各自log jar 包用其他jar-2-slfj 的转换包 然后统一调用 slf4j

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

      1. 将系统中其他log框架进行排除

      2.用中间包替换原有的日志框架

      3.我们再来导入slf4j的其他实现

springboot 尚桂谷学习笔记03-LMLPHP

  日志和springboot关系:springboot项目依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.0.1.RELEASE</version>
<scope>compile</scope>
</dependency>

  spring-boot-starter 依赖 :spring-boot 用它做日志功能

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>2.0.1.RELEASE</version>
<scope>compile</scope>
</dependency>

  通过 pom 文件查看依赖图:

springboot 尚桂谷学习笔记03-LMLPHP

  spring boot 底层依赖关系:

springboot 尚桂谷学习笔记03-LMLPHP

  总结:

    spring boot 底层也是使用 slf4j + logback 的方式进行日志记录

    spring boot 也把其他的日志都替换了slf4j 包

    中间替换包:jcl -》slf4j 实现是 slf4j

springboot 尚桂谷学习笔记03-LMLPHP

    如果我们要引入其他框架 一定要把这个框架的默认日志依赖移除掉 否则会有冲突

    spring boot 可以自动适配所有的日志 底层使用slf4j + logback 的方式记录日志 引入其他框架 必须排除其log依赖框架

  log 实例:

  spring boot 默认已经开启了日志功能:

  测试:

package com.lixuchun.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() { // 日志的级别
// 由低到高 trace<debug<info<warn<error
// 可以调节日志的级别 日志只会打印这个级别或者更高级别的日志
logger.trace("这是跟踪轨迹");
logger.debug("这是debug日志");
// springboot 默认使用info级别
logger.info("这是info日志");
logger.warn("这是warn日志");
logger.error("这是error日志");
} }

  在properties 文件中设置级别实例:

springboot 尚桂谷学习笔记03-LMLPHP

  %d{yyyy-mm-dd}  [%thread]   %-5level      %logger{50}    %msg%n

  2018-02-01       [main]    左对齐 Trace  50个log字符信息  日志信息 换行

springboot 尚桂谷学习笔记03-LMLPHP

springboot 尚桂谷学习笔记03-LMLPHP

springboot 尚桂谷学习笔记03-LMLPHP

  2 指定配置

    给类路径下放上每个日志框架的配置文件即可 springboot 就不适用它的默认配置了

springboot 尚桂谷学习笔记03-LMLPHP  logback.xml : 直接被日志框架识别

  logback-spring.xml: 日志框架不直接加载 由springboot加载

springboot 尚桂谷学习笔记03-LMLPHP

springboot 尚桂谷学习笔记03-LMLPHP

  spring.profiles.active=dev 激活dev 配置

  或者控制台进行激活

springboot 尚桂谷学习笔记03-LMLPHP

  然后可以使用springboot的高级功能

  切换日志框架:pom文件 去除 1 2 添加 3

    通过 pom 依赖树 进行 pom 依赖 删除简洁

springboot 尚桂谷学习笔记03-LMLPHP

springboot 尚桂谷学习笔记03-LMLPHP

  然后使用就是 log4j2 的日志框架了

05-26 08:26