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

  日志框架:

  

  市面上的日志框架:

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

  

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

  日志门面选择: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等

  每个日志实现框架都有自己的配置文件, 使用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关系: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 文件查看依赖图:

  spring boot 底层依赖关系:

  总结:

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

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

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

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

    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 文件中设置级别实例:

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

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

  2 指定配置

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

  logback.xml : 直接被日志框架识别

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

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

  或者控制台进行激活

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

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

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

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

springboot 尚桂谷学习笔记03的更多相关文章

  1. spring boot 尚桂谷学习笔记11 数据访问03 JPA

    整合JPA SpringData 程序数据交互结构图 (springdata jpa 默认使用 hibernate 进行封装) 使用之后就关注于 SpringData 不用再花多经历关注具体各个交互框 ...

  2. spring boot 尚桂谷学习笔记10 数据访问02 mybatis

    数据访问 mybatis 创建一个 springboot 工程,模块选择 sql 中 mysql(数据驱动), jdbc(自动配置数据源), mybatis Web模块中选择 web pom 引入: ...

  3. spring boot 尚桂谷学习笔记09 数据访问

    springboot 与数据库访问 jdbc, mybatis, spring data jpa,  1.jdbc原生访问 新建项目 使用 springboot 快速构建工具 选中 web 组件 sq ...

  4. spring boot 尚桂谷学习笔记07 嵌入式容器 ---Web

    ------配置嵌入式servlet容器------ springboot 默认使用的是嵌入的Servlet(tomcat)容器 问题? 1)如何定制修改Servlet容器的相关配置: 1.修改和se ...

  5. spring boot 尚桂谷学习笔记06 异常处理 ---Web

    ------错误处理机制------ 默认效果 1 返回一个默认的错误页面 浏览器发送请求的请求头:优先接收 text/html 数据 客户端则默认响应json数据 : accept 没有说明返回什么 ...

  6. spring boot 尚桂谷学习笔记05 ---Web

    ------web 开发登录功能------ 修改login.html文件:注意加粗部分为 msg 字符串不为空时候 才进行显示 <!DOCTYPE html> <!-- saved ...

  7. spring boot 尚桂谷学习笔记04 ---Web开始

    ------web开发------ 1.创建spring boot 应用 选中我们需要的模块 2.spring boot 已经默认将这些场景配置好了 @EnableAutoConfiguration ...

  8. springboot 尚桂谷学习总结02

    ------向导快速创建Springboot 项目------ 1.使用spring initializer 快速创建一个springboot 项目 选择后 最后点击finsh 向导会联网创建 spr ...

  9. springboot 尚桂谷学习总结01

    ------springboot 技术入门------ 1.springboot 简介: 优点: 简化spring 应用开发的一个框架 整个spring技术栈的一个大整合 ------微服务----- ...

随机推荐

  1. 这样设计 Java 异常更优雅,赶紧学!

    来源:lrwinx.github.io/2016/04/28/如何优雅的设计java异常/ 导语 异常处理是程序开发中必不可少操作之一,但如何正确优雅的对异常进行处理确是一门学问,笔者根据自己的开发经 ...

  2. Codeforces 1110C (思维+数论)

    题面 传送门 分析 这种数据范围比较大的题最好的方法是先暴力打表找规律 通过打表,可以发现规律如下: 定义\(x=2^{log_2a+1}\) (注意,cf官方题解这里写错了,官方题解中定义\(x=2 ...

  3. 20、numpy——IO

    NumPy IO Numpy 可以读写磁盘上的文本数据或二进制数据. NumPy 为 ndarray 对象引入了一个简单的文件格式:npy. npy 文件用于存储重建 ndarray 所需的数据.图形 ...

  4. Mybatis-技术专区-中的条件查询createCriteria example里面的条件

    之前用Mybatis框架反向的实体,还有实体里面的Example,之前只是知道Example里面放的是条件查询的方法,可以一直不知道怎么用,到今天才开始知道怎么简单的用. 在我们前台查询的时候会有许多 ...

  5. 我心中的ASP.NET Core 新核心对象WebHost(二)

    这是ASP.NET Core新核心对象系列的第二篇,上一篇 WebHost准备阶段 我们讲到了WebHostBuilder的初始化及配置.我们给WebHostBuilder进行以下配置 UseKest ...

  6. 268-基于FMC接口的DSP TMS320C6657子卡模块

    基于FMC接口的DSP TMS320C6657子卡模块 一. 概述         FMC连接器是一种高速多pin的互连器件,广泛应用于板卡对接的设备中,特别是在xilinx公司的所有开发板中都使用. ...

  7. Synchronized和ReentranLock的比较

    并发编程最容易遇到的问题就是就是安全问题,因此解决方式有两种 使用同步方法或同步代码块(Synchronized关键字) 使用锁机制(ReentranLock) 同步方法和同步代码块(Synchron ...

  8. Go 迭代切片

    迭代切片有两种方式: 1. 使用 for range 迭代切片   // 其长度和容量都是 4 个元素 slice := [], , , } // 迭代每一个元素,并显示其值 for index, v ...

  9. python3 变量格式化转换成字符串

    num=3 str='I am %f years old' % (num) print(str) 输出 I am 3.000000 years old

  10. SpringBoot---常规属性配置

    1.概述 1.1.在Spring环境下,注入properties文件中的值,通过@PropertySource指明properties文件的位置,然后通过@Value注入值: 在SpringBoot环 ...