原来日志还分抽象层和实现层。。。

抽象层被称为是日志门面,实现层被称为是日志实现

门面的有:

- JCL【Jakarta Commons Logging】    远古门面

- SLF4J【Simple Logging Facade For Java】

- Jboss - Logging  使用场景特殊

实现有:

- LOG4J  性能问题

- LOG4J2

- JUL【java.util.logging】 官方日志,性能一般

- Logback  对LOG4J的升级,为了满足更多的日志框架,又编写了SLF4J

选一个门面和一个实现共同完成SpringBoot的日志功能

SpringBoot 底层的Spring框架,Spring框架默认使用JCL日志门面

【可是我的SSM明明还是写的SFL4J实现。。。】

在SpringBoot这里选用了SFL4J + Logback


如何使用?

日志记录的方法调用,不应该直接调用日志实现类,而是调用抽象层的方法

SLF4J官方文档说明:

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

- 导入SLF4J的日志资源

- 调用日志工厂的方法获取实例【这一步我怎么在SSM使用日志就有过。。。】

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 是一个抽象的API,需要其他具体日志实现依赖完成

对就是这样,当时SSM整合使用了LOG4J,结果还说这个日志加载失败

翻博客说需要一个整合jar包 就是这个 SLF4J + Log412的依赖,然后其他和LOG4J的操作一样

官方说这个依赖是 Apdaptation Layer 适配层

作者当时写LOG4J的时候,没想到要上升抽象层面,SLF4J是LOG4J的后面完成的

【兼容性的补充把这算。。。】


遗留问题:

当前系统使用A日志组合

Spring使用B日志组合

Hibernate使用C日志组合

Mybatis又使用D日志组合

面对鱼龙混杂的日志,如何做到大一统???

官方给出的遗留API

SLF4J作者采用了一种办法:

给这些不同的日志组合使用覆盖包

覆盖包:

- Commons logging API 【jci-over-slf4j.jar】

- LOG4J API 【log4j-over-slf4j.jar】

- java.util.logging 【jui-to-slf4j.jar】

这些包能使所属的框架不会报错,并统一转让SL4J为统一的API

统一的过程:

1、从系统中排除其他日志框架

2、使用这个中间包替换原有的日志框架

3、导入SFL4J & 实现

这些图示已经很明白的告诉了我们

要使用实现就跟我们上面的 门面 + 实现一样简单,

如果集成的其他框架采用的别的日志实现,使用SLF4J的覆盖包接管即可


SpringBoot日志关系:

我们居然可以对pom.xml查看依赖关系UML图

这可真复杂。。。

这个是SpringBoot的组成部分

1、底层也是SLF4J + Logback 实现日志记录

2、SpringBoot把其他的日志都替换成了SLF4J

3、中间的替换包


使用:

设置日志级别,logging.level.指定具体包名,或者是root或者其他

在使用lombok时,可以 @SLF4J注解在使用的类上面,可直接使用实例log进行调用

指定输出文件和路径:

只规定名称,日志输出在本工程目录中

那么我们试试不用路径,直接把路径写在文件名称中

C盘并没有输出文件哦,【过时参数 logging.file是可以这样设置的】

启用Path参数测试

并不能输出到C盘中

这个允许使用工程内目录

自定义输出格式

# 自定义控制台输出格式
# logging.pattern.console = # 自定义文件输出格式
# logging.pattern.file =

查看Boot默认的参数配置

详细见:

https://www.bilibili.com/video/BV1gW411W76m?t=190&p=26

https://www.bilibili.com/video/BV1gW411W76m?t=190&p=27


【SpringBoot】09 日志集成的更多相关文章

  1. SpringBoot系列之集成logback实现日志打印(篇二)

    SpringBoot系列之集成logback实现日志打印(篇二) 基于上篇博客SpringBoot系列之集成logback实现日志打印(篇一)之后,再写一篇博客进行补充 logback是一款开源的日志 ...

  2. SpringBoot的日志管理

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

  3. 十二、SpringBoot 优雅的集成Spring Security

    前言 至于什么是Spring security ,主要两个作用,用户认证和授权.即我们常说的,用户只有登录了才能进行其他操作,没有登录的话就重定向到登录界面.有的用户有权限执行某一操作,而有的用户不能 ...

  4. SpringBoot12 QueryDSL01之QueryDSL介绍、springBoot项目中集成QueryDSL

    1 QueryDSL介绍 1.1 背景 QueryDSL的诞生解决了HQL查询类型安全方面的缺陷:HQL查询的扩展需要用字符串拼接的方式进行,这往往会导致代码的阅读困难:通过字符串对域类型和属性的不安 ...

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

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

  6. 【使用篇二】SpringBoot的日志体系及如何开启logback日志(15)

    抄自:https://blog.csdn.net/liujun03/article/details/82684209 Java应用中,日志一般分为以下5个级别(从高到低): ERROR 错误信息 WA ...

  7. SpringBoot之日志记录-专题四

    SpringBoot之日志记录-专题四 六.日志管理 6.1使用log4j记录日志 6.1.2新建log4j配置文件 文件名称log4j.properties #log4j.rootLogger=CO ...

  8. SpringBoot+ELK日志系统搭建

    一.ELK是什么 "ELK"是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kibana.Elasticsearch 是一个搜索和分 ...

  9. 解决springboot启动日志异常问题

    问题描述:springboot启动异常,启动后没有日志打印. 问题原因:slf4j日志实现重复,找不到对应实现类. 问题应对: 1. 是不是项目没起来---->打印的日志数据,到这里就不打印了, ...

  10. SpringBoot Logback 日志配置

    目录 前言 日志格式 日志输出 日志轮替 日志级别 日志分组 小结 前言 之前使用 SpringBoot 的时候,总是习惯于将日志框架切换为 Log4j2,可能是觉得比较靠谱,也可能年龄大了比较排斥新 ...

随机推荐

  1. 后端给前端rtmp和flv直播 播放方法

    const suffixal = this.videoObj.videoServer .split('?')[0] .split('.') .pop() var router = this.$rout ...

  2. 接口自动化之request模块

    1.安装 方式一.命令行直接 pip install requests 方式二.PyCharm中,File >> Settings >> Project:Practice &g ...

  3. 国产搜索引擎崛起:Elasticsearch 国产化加速

    背景 多年来,Elasticsearch(简称:ES) 在搜索领域一直独占鳌头,其卓越的性能和广泛的应用深受国内众多企业的青睐.从查询搜索到数据分析,再到安全分析,Elasticsearch 均展现出 ...

  4. EF CORE 遇到“无法打开登录所请求的数据库 "win7bc"。登录失败。”

    报错内容:ex:An exception has been raised that is likely due to a transient failure. Consider enabling tr ...

  5. 小米 红米 MIUI 重新打开(开启)蓝牙耳机电量弹窗

    原本关闭了下拉通知栏,显示耳机电量的窗口.想重新开开启. 解决方法: 1.确保小爱同学开了通知权限. 2.在蓝牙-高级设置里-开启"小米快连" 3.手机是解锁状态(非锁屏),耳机需 ...

  6. NumPy 舍入小数、对数、求和和乘积运算详解

    舍入小数 在 NumPy 中,主要有五种方法来舍入小数: 截断 去除小数部分,并返回最接近零的浮点数.使用 trunc() 和 fix() 函数. 示例: import numpy as np arr ...

  7. 利用Wireshark抓包分析DNS域名解析过程

    一.DNS协议概述   DNS协议也可以称为DNS服务,全称是Domain Name System,即域名系统,和HTTP协议一样,也是一个位于应用层的协议(服务),它是基于运输层的UDP协议的.从D ...

  8. springboot3使用validation进行参数验证

    前言   今天学习了使用validation整合springboot进行字段的校验,体验下来感觉很不错,有了validation可以省下一大堆控制器里面的数据校验,例如前端发送了一个请求到我们后端,请 ...

  9. Jemter代理服务器录制脚本,优化后形成性能测试场景

    在进行性能测试(压力.负载)等,先要有对应的测试场景,比如添加功能:要先登录成功,然后调用添加接口,输入添加的内容,才可以添加成功.那么可以通过Jemter代理服务器,设置代理,打开测试的网站,录制脚 ...

  10. FPGA对EEPROM驱动控制(I2C协议)

    本文摘要:本文首先对I2C协议的通信模式和AT24C16-EEPROM芯片时序控制进行分析和理解,设计了一个i2c通信方案.人为按下写操作按键后,FPGA(Altera EP4CE10)对EEPROM ...