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

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

门面的有:

- 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. three.js高性能渲染室外场景

    大家好,本文在相关文章的基础上,使用three.js渲染了高性能的室外场景,在移动端也有较好的性能,并给出了代码,分析了关键点,感谢大家~ 关键词:three.js.Web3D.WebGL.室外场景. ...

  2. LeetCode 332. Reconstruct Itinerary重新安排行程 (C++/Java)

    题目: Given a list of airline tickets represented by pairs of departure and arrival airports [from, to ...

  3. element-ui 合并行或列 table :span-method(行合并)

    element-ui 官网案例:table合并行或列 element-ui官网中关于行合并的例子是根据行号进行合并的,这显然不符合我们日常开发需求,因为通常我们table中的数据都是动态生成的,所以需 ...

  4. mybatis Selective动态判断属性值新增或修改操作,batch批量操作

    mybatis Selective动态判断属性值新增或修改操作,batch批量操作 mybatis insert foreach批量添加https://www.cnblogs.com/oktokeep ...

  5. spring mvc GET请求方式及传参

    spring mvc GET请求方式及传参 @Api(tags = "管理接口") @Slf4j @RestController @RequestMapping("/my ...

  6. org.springframework.beans.BeanUtils.copyProperties对象赋值的常见问题

    org.springframework.beans.BeanUtils.copyProperties对象赋值的常见问题 //codepublic static void copyProperties( ...

  7. Ajax分析方法

    Ajax 分析方法 以前面的微博为例,拖动刷新的内容由 Ajax 加载,而且页面的 URL 没有变化,那么应该到哪里去查看这些 Ajax 请求呢? 查看请求 需要借助浏览器的开发者工具,下面以 Chr ...

  8. Kubernetes容器生命周期 —— 钩子函数详解(postStart、preStop)

    1.概述 容器生命周期钩子(Container Lifecycle Hooks)监听容器生命周期的特定事件,并在事件发生时执行已注册的回调函数. 钩子函数能够感知自身生命周期中的事件,并在相应的时刻到 ...

  9. DotNetGuide荣登GitHub C#中文 Trending 月榜第一

    前言 发现最近有一大批应届生同学和Java转.NET的同学加入了我们的DotNetGuide技术社区交流6群(其他5个群都已满500人,6群也已有340多个小伙伴了)今天看到DotNetGuide荣登 ...

  10. python重拾第十一天-RABBITMQ队列

    安装python rabbitMQ module pip install pika 官网 https://pypi.python.org/pypi/pika 安装rabbit-server服务,cen ...