SpringBoot中的SFL4J日志
SpringBoot:底层是Spring框架,Spring框架默认使用的是JCL日志的抽象层
SpringBoot选用SLF4J和logback
如何系统地在系统中使用SLF4J
在开发的使用,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法
SLF4J的使用原理:
遗留问题
当使用多个框架时,不同的框架使用的日志组件不同,这时我们就要统一日志记录,即使是别的框架也要和我们统一使用SLF4J进行输出,如下图:
通过适配jar包将原来框架对这些日志的依赖接触(可以理解为设计模式中的适配器模式),使之可以使用SLF4J进行输出。
所以,如何让系统中所有的日志统一到SLF4J,参照以下几步:
- 将系统中其他日志框架先排除出去;
- 用中间包来替换原有的日志框架;
- 我们再导入SLF4J其他的实现
SpringBoot里面的日志问题
底层依赖关系:
总结:
- SpringBoot底层也是使用SLF4J+logback的方式进行日志记录的
- SpringBoot也把其他的日志替换成了SLF4J
- 如果我们要引入其他框架,一定要把这个框架的默认日志包给移除掉
核心总结:
SpringBoot能自动适配所有的日志框架,而且底层使用SLF4J+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志包排除掉。
日志使用
默认配置
SpringBoot默认帮我们配置好了日志
在SpringBoot的测试类下
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class Springboot3ApplicationTests {//记录器Logger logger = LoggerFactory.getLogger(getClass());@Testvoid contextLoads() {//日志的级别://由低到高 trace<debug<info<warn<error//可以调整输出的日志级别,日志就只会在这个级别以后的高级别生效logger.trace("这时trace日志");//trace是用来跟踪一些信息的logger.debug("这是debug日志");//debug是用来输出一些调试日志的logger.info("这是info日志");//info是我们自己定义想要输出的一些信息logger.warn("这是warn日志");//warn是日志警告信息logger.error("这是error日志");//error是输出错误信息}}
我们可以手动调节日志的级别,只要在配置文件里面设置就行了,如下:
#设置日志输出的级别
logging.level.com.gcl=trace
指定文件路径下生成日志:
# SpringBoot提示logging.file已经过期了
# 但是还有logging.file.name和logging.file.path两个可以使用logging.file.name=D:/springboot.log
我们现在使用logging.file的话,SpringBoot会提示logging.file已经过期了,所以我们可以使用logging.file.name或logging.file.path来生成日志
logging.file.name不指定路径的话就在当前项目下的根目录生成日志文件
logging.file.path是在当前磁盘的根路径下创建Spring文件夹和里面的log文件,并使用spring.log作为默认文件名,如下:
logging.file.path=/spring/log
如果同时配置上面两个属性:默认只有logging.file.name 生效,会在项目根目录下生成 .log文件
输出日志的格式:
在控制台输出指定的日志格式
# 在控制台输出指定的日志格式logging.pattern.console=%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
在指定文件中日志输出的格式
# 指定文件中日志输出的格式logging.pattern.file=%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
相关文章:

web开发性能优化---用户体验篇
怎样从技术角度怎样增强用户体验。都是非常多平台都在做的事情,依据个人实际经验碰到几种体验做下总结。1、降低页面刷新白屏适当使用ajax技术。改善刷新白屏现象。2、信息提醒,邮件、站内信、短信在购物流程、售后流程适当添加信息温馨提醒环节…

linux命令2--cd和pwd
2019独角兽企业重金招聘Python工程师标准>>> cd是linux中最为常见的一个命令,其作用就是切换到某一个路径下 例子1 到自己的用户目录下 cd ~ 也可以直接cd 例子2 返回进入当前目录之前的目录 cd - 例子3 把上一个命令作为cd的参数命令 cd !$ 参考文档&am…

COALESCE语句解救sql的sum问题
mysqlmybatis有一个sql语句是统计用的 <select id"getNum" resultType"map"> 结果是一个map, select语句的结果是一些sum select sum(t.anum),sum(t.bnum)from tableSum twhere t.id #{id} 调试发现,数据库明明记录已经落入&…

在UE5创造一个多山的松树森林场景学习教程
UE5游戏场景设计制作视频教程 大小解压后:4.37G 1920X1080 mp4 语言:英语中英字幕(机译)时长:5小时 20分 课程获取:在UE5创造一个多山的松树森林场景学习教程

编写纳新网站后端的相关知识总结
使用HSSFWorkbook导出数据库中的数据 导入Apache POI Maven jar包 <!-- Apache POI --> <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.6</version> </dependency>在控制层编…

IOSUIcontrol事件
UIKit提供了一组控件:UISwitch开关、UIButton按钮、UISegmentedControl分段控件、UISlider滑块、UITextField文本字段控件、UIPageControl分页控件。 控件是对UIView派生类的实用增强及补充,并可以直接附着于导航栏、表格单元,甚至更大的对象…

Xcode Debugging
程序员日常开发中有大量时间都会花费在 debug 上,从事 iOS 开发不可避免地需要使用 Xcode。这篇博客就主要介绍了 Xcode 中几种能够大幅提升代码调试效率的方式。“If debugging is the process of removing bugs, then programming must be the process of putting…

css小技巧 -- 单标签实现单行文字居中,多行文字居左
可能出现的尺寸场景: 代码如下: <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv&q…

Unity游戏开发大师班
大小解压后:8.63G 持续时间19h 包含项目文件 1280X720 MP4 语言:英语中英文字幕(根据原英文字幕机译更准确) Unity游戏开发大师班 信息: 要求 –没有课程要求,展示了开发过程的每一步(包括解释的每一行代码) 这门课…

GC处理的分析
GC处理的深入分析 在Java中针对垃圾收集也提供了多种不同的处理分类 1.引用计数: 一个实例化对象,如果有程序使用了这个引用对象,引用计数加一,当一个对象使用完毕,引用计数减一,当引用计数为0时&#x…

2016.1.20 dubbo启动之后机器ip有问题
环境 100.0.4.222 zookerper 2182 100.0.4.221 dubbo 20871 1.问题 dubbo 对应的机器ip 是202.106.199.37 不是100.0.4.221 2.解决 说明 主机名有问题 修改主机名 使之生效 重启zookeeper服务 和dubbo服务 搞定 转载于:https://www.cnblogs.com/huawei306/p…

在Eclipse或MyEclipse中安装findbugs插件
2019独角兽企业重金招聘Python工程师标准>>> 我们都知道,在Eclipse或MyEclipse中安装插件有两种方式,一种是在线安装,第二种是先下载插件然后在本地安装。 在这里我们先介绍第一种在线安装。 Eclipse上在线安装findbugs(具体步骤如…

Jboss解决只能通过localhost访问而不能使用IP访问项目的问题
jboss的配置文件,如 E:\downloadChrome\wildfly-10.1.0.Final\standalone\configuration\shandalone.xml <interfaces> <interface name"management"> <inet-address value"${jboss.bind.address.management:127.0.0.1}"/>…

一.JDBC概述
第1章:JDBC概述 1.1 数据的持久化 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大…

在Blender中创建惊人的低多边形动画
大小解压后:13.5G 持续时间10小时 包括项目文件 1920X1080 MP4 语言:英语中英文字幕(根据原英文字幕机译更准确) 标题:CGBoost学院–立方体世界在Blender中创建惊人的低多边形动画 信息: 创建漂亮的3D动画,就像玩乐高…

开发Eclipse自定义控件
摘自:http://www.ibm.com/developerworks/cn/opensource/os-eclipcntl/ 我们在开发自定义控件时主要考虑以下问题: 1、 自定义控件的绘制:通常我们需要自己对控件的形状或图案进行绘制; 2、 控件对键盘事件的响应:当焦…

小米手机无法连接eclipse调试案例
按照参考博客2的方法 小米2S手机在Eclipse真机调试时,设备选择列表无法显示手机,DDMS也连接不上设备,解决步骤: 1.打开手机设置中开发者选项 - USB调试开启; 2.保证小米2S手机Windows下设备驱动已安装,可…

手机号码格式验证和 FASTDFS 工具类
常见大陆和香港号码格式验证 import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException;public class PhoneFormatCheckUtils {// 大陆号码或香港号码均可public static boolean isPhoneLegal(String str) throws Patt…

Maya摄像机动画技能学习教程
MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 语言:英语中英文字幕(根据原英文字幕机译更准确) |时长:4h 38m |大小解压后:1.65 GB 含课程文件 Maya的相机工具是所有3D包中最好的。在本课程中&#x…

前端解决跨域问题的8种方案(最新最全)
.同源策略如下: URL说明是否允许通信http://www.a.com/a.jshttp://www.a.com/b.js同一域名下允许http://www.a.com/lab/a.jshttp://www.a.com/script/b.js同一域名下不同文件夹允许http://www.a.com:8000/a.jshttp://www.a.com/b.js同一域名,不同端口不允…

IDEA中修改文件的默认创建方式
今天很手欠地在创建application-dev.yml文件的时候将application-dev这个名字的文件成功变成了一个我不认识的文件打开方式了,如下图: 可以看到,这个application-dev.yml文件从原来的SpringBoot的配置文件变成一个我们不认识的文件格式… 补…

ArcEngine 直连连接SDE
关键代码IPropertySet pPropertySet new PropertySetClass();pPropertySet.SetProperty("SERVER", sde.IpAdress);pPropertySet.SetProperty("INSTANCE", "sde:oracle11g$//" sde.IpAdress "/" sde.Instance); pPrope…

Dubbo和Spring Cloud微服务架构对比
一、为什么要使用微服务? 微服务提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合。 今天我们来了解下业内主要的微服务框架:Dubbo 和 Spring Cloud 微服务主要的优势 降低复杂度将原来耦合在一起的复杂业务拆分为单个服务,…

Unity 3D为策略游戏创建地图学习教程
MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 语言:英语中英文字幕(根据原英文字幕机译更准确) |时长:30节课(7h 42m) |大小:5 GB 含项目文件 沿着曲线、高程图和数据结构移动对象 你会学到: Unity&…

Lambda表达式(简单解析)
Lambda表达式 Lambda表达式其实是JDK8的一个新特性。所谓Lambda表达式指的是应用在单一抽象方法接口环境下的一种简化定义形式,可以用于解决匿名内部类中定义复杂的问题。 我们先来看一段代码,如下: interface Customer{public void print(…

YTU 2899: D-险恶逃生 I
2899: D-险恶逃生 I 时间限制: 1 Sec 内存限制: 128 MB提交: 130 解决: 55题目描述 Koha被邪恶的巫师困在一个m*n的矩阵当中,他被放在了矩阵的最左上角坐标(0,0)处,而唯一的出口在矩阵最右下角坐标(m-1,n-1)处,他每次只能向右或者向下移动一…

2021-2027年中国托育服务行业市场研究及前瞻分析报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国托育服务行业市场行业相关概述、中国托育服务行业市场行业运行环境、分析了中国托育服务行…
2021全国高校计算机能力挑战赛(初赛)Java试题一
从大于等于N 的正整数里找到一个最小的数M,使之满足:M和M的逆序数(如1230的逆序数为321)的和为一个[100000,200000]区间内的值。 import java.util.Scanner; public class Main {public static void main(String[] args){Scanner scanner new Scanner(System.in);int N scann…

Blender写实产品创作学习教程
Blender中的现实产品创作 Realistic Product Creation in Blender MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 语言:英语中英文字幕(根据原英文字幕机译更准确)|时长:71节课(6小时30分钟)|大小解压…

试题 入门训练 Fibonacci数列(Java)
题目: 一开始我看到这题目其实觉得挺简单的,第一次简单写了一个循环就提交上去了,结果… 我意识到这是因为超过long类型的最大范围导致的,所以第二次换成BigInteger大整数类型,但最后一个测试点超时了… 通过百度…