------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. CCNA 之 一 网络基础

    计算机概念 很早期的计算机是一个庞然大物,可能都有几层楼那么高,随着技术的发展.更新,体型就变得越来越小,也越来越普及. 这个时候计算机与计算机之间就需要数据交流和信息的共享,早期是美国那边主要用于大 ...

  2. spring-第十四篇之资源访问Resource接口

    1.Resource接口提供的主要方法 1>getInputStream():定位并打开资源,返回资源对应的输入流.每次调用都返回新的输入流.调用者必须负责关闭输入流. 2>isOpen( ...

  3. LibreOJ 6177 题解(状压DP)

    题面 传送门 分析 刚看到这道题时想的是跟最短哈密顿路类似的二进制状压DP,先用floyd处理距离 但是此题用二进制不够,应该用三进制 0,1,2分别表示未送,正在送,已送完 dp[s][i]表示当前 ...

  4. VUE小案例--简易计算器

    这个小案例主要时练习v-model的使用,功能并不完善 <!DOCTYPE html> <html lang="zh-CN"> <head> & ...

  5. 1.ireport基本使用

    1. 2.

  6. 2018-8-10-win10-uwp-毛玻璃

    title author date CreateTime categories win10 uwp 毛玻璃 lindexi 2018-08-10 19:16:50 +0800 2018-2-13 17 ...

  7. 什么是VPX技术?

    北京太速科技有限公司 自主研发VPX板卡  http://www.orihard.com/ 欢迎关注 新型VPX(VITA 46)标准是自从VME引入后的25年来,对于VME总线架构的最重大也是最重要 ...

  8. DNS域名系统,简述工作原理

    DNS工作原理: 当DNS客户端需要在程序中使用名称时,它会查询DNS服务器来解析该名称.客户端发送的每条查询信息包括三条信息:指定的DNS域名,指定的查询类型,DNS域名的指定类别.基于UDP服务, ...

  9. ArrayList、LinkedList、Vector区别

    ArrayList.LinkedList.Vector均为可伸缩数组,即可以动态改变长度的数组. 比较ArrayList和Vector: 1. 共同点: ArrayList和Vector都是基于Obj ...

  10. 【Leetcode周赛】从contest-121开始。(一般是10个contest写一篇文章)

    Contest 121 (题号981-984)(2019年1月27日) 链接:https://leetcode.com/contest/weekly-contest-121 总结:2019年2月22日 ...