【SpringBoot】09 日志集成
原来日志还分抽象层和实现层。。。
抽象层被称为是日志门面,实现层被称为是日志实现
门面的有:
- 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 日志集成的更多相关文章
- SpringBoot系列之集成logback实现日志打印(篇二)
SpringBoot系列之集成logback实现日志打印(篇二) 基于上篇博客SpringBoot系列之集成logback实现日志打印(篇一)之后,再写一篇博客进行补充 logback是一款开源的日志 ...
- SpringBoot的日志管理
SpringBoot的日志管理 SpringBoot关于日志的官方文档 1.简述 SpringBoot官方文档关于日志的整体说明 本博客基于SpringBoot_1.3.6大家请先简单看下这篇英文的官 ...
- 十二、SpringBoot 优雅的集成Spring Security
前言 至于什么是Spring security ,主要两个作用,用户认证和授权.即我们常说的,用户只有登录了才能进行其他操作,没有登录的话就重定向到登录界面.有的用户有权限执行某一操作,而有的用户不能 ...
- SpringBoot12 QueryDSL01之QueryDSL介绍、springBoot项目中集成QueryDSL
1 QueryDSL介绍 1.1 背景 QueryDSL的诞生解决了HQL查询类型安全方面的缺陷:HQL查询的扩展需要用字符串拼接的方式进行,这往往会导致代码的阅读困难:通过字符串对域类型和属性的不安 ...
- Springboot的日志管理&Springboot整合Junit测试&Springboot中AOP的使用
==============Springboot的日志管理============= springboot无需引入日志的包,springboot默认已经依赖了slf4j.logback.log4j等日 ...
- 【使用篇二】SpringBoot的日志体系及如何开启logback日志(15)
抄自:https://blog.csdn.net/liujun03/article/details/82684209 Java应用中,日志一般分为以下5个级别(从高到低): ERROR 错误信息 WA ...
- SpringBoot之日志记录-专题四
SpringBoot之日志记录-专题四 六.日志管理 6.1使用log4j记录日志 6.1.2新建log4j配置文件 文件名称log4j.properties #log4j.rootLogger=CO ...
- SpringBoot+ELK日志系统搭建
一.ELK是什么 "ELK"是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kibana.Elasticsearch 是一个搜索和分 ...
- 解决springboot启动日志异常问题
问题描述:springboot启动异常,启动后没有日志打印. 问题原因:slf4j日志实现重复,找不到对应实现类. 问题应对: 1. 是不是项目没起来---->打印的日志数据,到这里就不打印了, ...
- SpringBoot Logback 日志配置
目录 前言 日志格式 日志输出 日志轮替 日志级别 日志分组 小结 前言 之前使用 SpringBoot 的时候,总是习惯于将日志框架切换为 Log4j2,可能是觉得比较靠谱,也可能年龄大了比较排斥新 ...
随机推荐
- 使用Wesky.Net.Opentools库,一行代码实现实体类类型转换为Json格式字符串
安装1.0.10以及以上版本的 Wesky.Net.OpenTools 包 包内,该功能的核心代码如下: 自定义属性: 实体类JSON模式生成器: 使用方式:引用上面的1.0.10版本或以上的 ...
- 视图结构 wxml 列表渲染 for
WXML是框架设计的一套标签语言,结合基础组件.事件系统,可以构建出页面的结构. wxml是一个严格的标记性语言,有开始就必须有结束,单标签就一个有结束符 5.1.数据绑定 在js逻辑层中定义数据源, ...
- kettle从入门到精通 第五十三课 ETL之kettle MQTT/RabbitMQ producer 实战
1.MQTT介绍 MQTT (Message Queuing Telemetry Transport) 是一种轻量级的消息传输协议,设计用于连接低带宽.高延迟或不可靠网络的设备. MQTT 是基于发布 ...
- 暴走漫画系列之高仿淘宝收货地址(附demo)
引语: 我是个程序猿,一天我坐在路边一边喝水一边苦苦检查bug. 这时一个乞丐在我边上坐下了,开始要饭,我觉得可怜,就给了他1块钱. 然后接着调试程序.他可能生意不好,就无聊的看看我在干什么,然后过了 ...
- 记一次 .NET某工厂报警监控设置 崩溃分析
一:背景 1. 讲故事 前些天有位朋友在微信上丢了一个崩溃的dump给我,让我帮忙看下为什么出现了崩溃,在 Windows 的事件查看器上显示的是经典的 访问违例 ,即 c0000005 错误码,不管 ...
- 盘点 Spring Boot 解决跨域请求的几种办法
熟悉 web 系统开发的同学,对下面这样的错误应该不会太陌生. 之所以会出现这个错误,是因为浏览器出于安全的考虑,采用同源策略的控制,防止当前站点恶意攻击 web 服务器盗取数据. 01.什么是跨域请 ...
- Debian安装Redis服务
Debian安装Redis服务 安装命令 apt-get update apt-get install redis-server 等待安装完成 配置密码 编辑Redis的配置文件/etc/redis/ ...
- 高通UEFI中的I2C的方式读取TP的id
高通UEFI中的I2C的方式读取TP的id 原文:https://blog.csdn.net/mengluoxixiang/article/details/100103347 老规矩,先说要实现的功能 ...
- Linux 修改 hostname
背景 之前安装Linux系统的时候,没有明确指定.现在因为在做某些实验的时候,为了更好地区分我所登录的每一台服务器. 于是有了此文. 做法 首先修改/etc/hostname,修改为自己想要的名字xx ...
- Linux驱动中的异步函数(aio_read和aio_write)
Linux驱动中的异步函数(aio_read和aio_write) 我们可以在signal_handler使用了read和write函数处理设备文件的读写操作.然而这两个函数可以分别用aio_read ...
