------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. (vue.js)axios interceptors 拦截器中添加headers 属性

    (vue.js)axios interceptors 拦截器中添加headers 属性:http://www.codes51.com/itwd/4282111.html 问题: (vue.js)axi ...

  2. Java_1.Java符号体系

    Java符号包含五类:标识符.关键字.常量及字面量.运算符.分隔符 1.标识符 定义:用于标明程序中元素的名字,如类.方法和变量 命名规则: ·由字母.数字.下划线(_)和美元符号($)构成的字母序列 ...

  3. C++中的布尔类型和引用

    1,C++ 中的布尔类型: 1,C++ 在 C 语言的基础类型系统之上增加了 bool: 1,C 语言中,没有 bool 类型存在,往往都是用整型代替 bool 类型,常用 0 表示假,用 1 表示真 ...

  4. python学习第二十六天非固定参数几种情况

    python函数参数传递,位置参数,默认参数,关键词参数,最后介绍一个非固定参数,就可以向函数传递一个列表,元组,字典,具体看看用法 1,有一个* 号的参数情况 def goos_stu(id,*us ...

  5. 关于Myeclipse下的JVM启动异常的问题:Out Of Memery / Could not reserve enough space for object heap

    以下都是初步理解: 这主要是JVM内存配置的问题,网上有很多参考资料,但是我们不能死板硬套,必须根据自己工程的实际情况配置相关的参数. 1.按照jvm的设计规则,JVM内存分为堆(Heap)和非堆(N ...

  6. C# 使用Silverlight打印图片

    原文:https://www.cnblogs.com/jiajiayuan/archive/2012/04/13/2444246.html Silverlight中的打印只有一个类,那就是PrintD ...

  7. R语言控制流

    一般来说R语言是自上而下执行的,但是遇到特殊情况可能用到循环执行某些语句,这时候条件运算和循环就能派上用场了.

  8. 接口需要上一个接口的返回值(unittest)

    import unittest,requests ''' 使用unittest框架的时候,这个接口需要上一个接口的返回值 ''' class Test_case(unittest.TestCase): ...

  9. 为什么集合类没有实现Cloneable和Serializable接口?

    为什么集合类没有实现Cloneable和Serializable接口? 克隆(cloning)或者是序列化(serialization)的语义和含义是跟具体的实现相关的.因此,应该由集合类的具体实现来 ...

  10. Autoit 3 常用的语句

    {系统环境变量} EnvUpdate ( ) ;更新环境变量 EnvGet ( "变量名称" ) ;取环境变量 ClipGet ( ) ;取剪辑板文本 EnvSet ( " ...