1、日志框架
小张:开发一个大型系统;
1、System.out.pringtln("");将关键数据打印在控制台;去掉?写在一个文件?
2、框架来记录系统的一些运行信息;日志;zhangloging.jar
3、高大上的几个功能?异步模式?自动归档?xxx?zhangloggin-good.jar
4、将以前框架写债下来?换上新的框架,重新修改之前相关的API;zhangloggin-prefect.jar
5、JDBC---数据库驱动;
写留一个 统一的接口层;日志门面(日志的一个抽象层);loggin-abstract.jar;
给项目中导入具体的日志实现就行了;我们之前的日志框架都是实现的抽象层;

市面上的日志框架;
JUL、JCL、Jboss-loggin、logback、log4j、log4j2、Slf4j...

左边选一个门面(抽象层)、右边来选一个实现;
日志门面:SLF4j;
日志实现:Logback;

SpringBoot:底层是Spring框架,Spring框架默认是JCL;
SpringBoot选用SLF4j和Logback;

2、SLF4j使用
1、如何在系统中使用SLF4j
以后在开发的时候,日志记录方法的 调用,不应该直接来调用日志的实现类,而是调用日志抽象层里面的方法;
应该给系统里面导入slf4j的jar和logback的实现jar

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

Hello World

参考:https://www.slf4j.org/manual.html
每一个日志的实现框架都有自己的配置文件;使用slf4j以后,配置文件还是做成日志实现框架自己本身的 配置文件;
2、遗留问题
a(slf4j+logback):Spring(commons-loggin)、Hibernate(jboss-logging)、MyBatis、xxx
统一日志记录,即使是别的框架和我一起统一使用slf4j进行输出?
参考:https://www.slf4j.org/images/legacy.png
如何让系统中所有的日志都统一到slf4j;
1、将系统中其他日志框架先排除出去;
2、用中间包来替换原有的日志框架;
3、我们导入slf4j其它的实现;
3、SpringBoot日志关系

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

SpringBoot使用它来 做日志功能;

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

总结:
1)、SpringBoot底层也是使用slf4j+logback的方式进行日志记录
2)、SpringBoot也把其它日志都替换成了slf4j;
3)、中间替换包?
4)、如果我们要引入其它框架?一定要把这个框架的默认日志依赖移除掉?
Spring框架用的是commons-loggin;
SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其它框架的时候,只需要把这个框架依赖的日志框架排除掉;
4、日志使用
1、默认配置
SpringBoot默认帮忙我们配置好了日志;

//记录器
Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void contextLoads() {
// System.out.println();
//日志的级别
//日志的级别由低到高 trace<debugger<info<warn<error
//可以调整日志的界别;日志只会在这个界别的高级别生效
logger.trace("这是trae日志...");
logger.debug("这是debugger日志...");
//SpringBoot默认给我们使用的是info级别的,没有指定级别的就用SpringBoot默认规定的级别;root级别
logger.info("这是info日志...");
logger.warn("这是警告日志...");
logger.error("这是错误日志..."); }

日志级别

SpringBoot修改日志的默认示例:

logging.level.com.portalkjt=trace

#logging.path=
#当前项目生成springboot.log日志
#logging.file=E:/springboot.log
#在当前磁盘的根路径下创建spring文件夹 和里面的log文件夹;使用spring.log 作为默认文件
#在控制台输出的日志的格式
logging.path=/spring/log #在控制台输出的日志格式
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level1 %logger{50} - %msg%n
#指定文件中日志输出的格式
logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level1 %logger{50} - %msg%n

properties配置

2、指定配置
参考:https://docs.spring.io/spring-boot/docs/1.5.14.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-logging
给类路径下放上每个日志框架自己的配置文件即可;SringBoot就不适用默认配置的了;

logback.xml直接被日志框架识别了;
logback-spring.xml:日志框架就不用直接加载日志的配置项,由SpringBoot解析日志配置,可以使用SpringBoot的高级Profile功能

<springProfile name="staging">
<!-- configuration to be enabled when the "staging" profile is active -->
可以指定某段配置只在某个环境下生效
</springProfile>

否则 :抛出异常;
5、切换日志框架
可以按照slf4j的日志适配图,进行相关的切换;
slf4j+log4j的切换;

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>logback-classic</artifactId>
<groupId>ch.qos.logback</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>

slf4j+log4j切换

切换为log4j2

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

切换为log4j2

SpringBoot的日志的更多相关文章

  1. SpringBoot与日志框架2(日志内斗)

    一.SpringBoot如何引入slf4j+logback框架的呢? 在POM文件中 <dependency> <groupId>org.springframework.boo ...

  2. SpringBoot与日志框架1(基本使用)

    一.日志框架 1.无论在什么系统,日志框架都是一个重要角色,所以理解和用好日志框架是相当重要的:像JDBC一样,日志框架分为接口层的门面和具体的实现组成. 2.市面上的产品: 2.1门面:SLF4J( ...

  3. Springboot的日志管理&Springboot整合Junit测试&Springboot中AOP的使用

    ==============Springboot的日志管理============= springboot无需引入日志的包,springboot默认已经依赖了slf4j.logback.log4j等日 ...

  4. java框架之SpringBoot(3)-日志

    市面上的日志框架 日志抽象层 日志实现 JCL(Jakarta Commons Logging).SLF4J(Simple Logging Facade For Java).JBoss-Logging ...

  5. SpringBoot整合日志

    Java日志 日志的接口层.抽象层 日志的实现 JCL(Jakarta Commons Logging) SLF4J(Simple Logging Facade for Java) Jboss-Log ...

  6. Springboot与日志

    日志框架 比如开发一个大型系统:1.System.out.println(""):将关键数据打印在控制台:去掉?写在一个文件?2.框架来记录系统的一些运行时信息:日志框架 :riz ...

  7. SpringBoot的日志管理

    SpringBoot的日志管理 SpringBoot关于日志的官方文档 1.简述 SpringBoot官方文档关于日志的整体说明 本博客基于SpringBoot_1.3.6大家请先简单看下这篇英文的官 ...

  8. springboot+logback日志输出企业实践(下)

    目录 1.引言 2. 输出 logback 状态数据 3. logback 异步输出日志 3.1 异步输出配置 3.2 异步输出原理 4. springboot 多环境下 logback 配置 5. ...

  9. springboot+logback日志输出企业实践(上)

    目录 1.引言 2.logback简介 3. springboot默认日志框架-logback 3.1 springboot示例工程搭建 3.2 日志输出与基本配置 3.2.1 日志默认输出 3.2. ...

随机推荐

  1. [转][cesium]1.添加本地服务器

    转自:http://www.cnblogs.com/fuckgiser/p/5633748.html 此系列cesium总教程:  https://www.cnblogs.com/fuckgiser/ ...

  2. Linux下解包/打包,压缩/解压命令

    .tar 解包:tar xvf FileName.tar 打包:tar cvf fileName.tar DirName tar.gz和.tgz 解压:tar zxvf FileName.tar.zi ...

  3. 学习笔记20—MATLAB特殊函数

    1.qfunc就是Q函数 2.mae(平均绝对误差)函数,mae(abs(A-B)) 3.Z = zscore(x) 等价于 Z=(X-repmat(mean(X),57,1))./repmat(st ...

  4. Python Appium 元素定位方法简单介绍

    Python  Appium  元素定位 常用的八种定位方法(与selenium通用) # id定位 driver.find_element_by_id() # name定位 driver.find_ ...

  5. idataway_前端

    一半架构,一半标准.---纯属个人意见 ----------------------------------------- 基本的插件:(尽量使用iviews) 1.传输图片. 2.下拉框.日期控件. ...

  6. 第 3 章 镜像 - 017 - RUN vs CMD vs ENTRYPOINT

    RUN.CMD 和 ENTRYPOINT 这三个 Dockerfile 指令看上去很类似,很容易混淆. 简单的说: RUN 执行命令并创建新的镜像层,RUN 经常用于安装软件包. CMD 设置容器启动 ...

  7. Setting the Java Class Path

    The class path is the path taht Java Runtime Environment(JRE) searches for classes and other resourc ...

  8. Java 反射(简单捋一下)

    有Student类,Person类,还有一个叫Class的类,这是反射的源头. 正常方式:通过完整的类名 > 通过new实例化 > 取得实例化对象 反射方式:实例化对象 > getC ...

  9. spring ----> aop的两种实现方式

    实现1:基于xml package com.rr.spring3.interf; //接口 public interface SayHello { public void sayHello(); } ...

  10. English trip V1 - 10.Family Ties 家庭关系 Teacher:Emily Key: Possessive s (所有格 s)

    In this lesson you will learn to talk about people in a family. 课上内容(Lesson) What are you Spring Fes ...