SpringBoot与日志配置

前言:
前文我们介绍了配置文件的原理还有如果切换配置文件的环境,个人觉得归纳为一手册,要用的时候查一下就好了。不然记那么多挺麻烦的。。

1.日志

1、日志框架

老生常谈,什么是日志;我们平时用System.out.println(“xxxxxx”)将一下比较关键的数据在控制台;后来接触了日志框架比较常用的就是Log4J了;
一般常用的框架有:
JUL,JCL,JBOSS-LOGING,longback,log4j,log4j2,slf4j等等

日志门面 (日志的抽象层)日志实现
JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for Java) jboss-loggingLog4j JUL(java.util.logging) Log4j2 Logback

左边选一个门面(抽象层)、右边来选一个实现;

日志门面: SLF4J;

日志实现:Logback;
SpringBoot选用的是SLF4J和logback

2、SLF4j使用

1、系统中使用SLF4j

我们开发的时候一般都是调用日志抽象里面的方法,而不直接调用日志的实现类,这样可扩展性更强

img

我们看看这张图,我们知道了SLF4J是接口,他有很多实现类,这次我们的项目用的是logback,如果我们想换成log4j怎么呢?我们可以到通过一个中间的适配器来适配log4j

2、如何统一日志框架

我们知道每种框架都有自己的日志系统,如果一个系统里面包含了SLF4J+logback,Spring(commons-logging),Hibernate(jboss-logging),Mybatis·····等等。如何统一日志记录,让所有的日志都统一使用slf4j进行输出?

img

我们来看看这张图,一个应用面向了很多日志框架,如果我们直接去掉这些依赖包的话,系统肯定会报错的,因为Spring本来底层会调用这些框架的API等。那怎么解决?从图中可以看出采取了偷梁换柱的做法;用另一个jar包代替了本来的jar包。比如:logging;代替后和slf4j完美契合,就可以使用。
总结:
1.先将以前的剔除
2.用中间包替换原有的日志框架
3.导入slf4j其他的实现

3、SpringBoot日志

说了这么多,我们来看看SprinBoot的日志实现
导入场景

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

我们可以看看依赖关系图

img

img

分析:1.我们可以看到SpringBoot底层使用slf4j+logback的方式进行日志记录2.其他日志会转换成slf4j3.可以从依赖中看到明显的替换包

img

4.要引用其他框架的时候记得

        <dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency>

SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉即可

4、日志使用;

1、默认配置

SpringBoot默认帮我们配置好了日志;

  • 测试
public class SpringBootLong4jApplicationTests {private Logger logger = LoggerFactory.getLogger(SpringBootLong4jApplicationTests.class);@Testpublic void contextLoads() {//日志的级别;//由低到高   trace<debug<info<warn<error//可以调整输出的日志级别;日志就只会在这个级别以以后的高级别生效logger.trace("这是trace日志...");logger.debug("这是debug日志...");//SpringBoot默认给我们使用的是info级别的,没有指定级别的就用SpringBoot默认规定的级别;root级别logger.info("这是info日志...");logger.warn("这是warn日志...");logger.error("这是error日志...");}}

img

    日志输出格式:%d表示日期时间,%thread表示线程名,%-5level:级别从左显示5个字符宽度%logger{50} 表示logger名字最长50个字符,否则按照句点分割。 %msg:日志消息,%n是换行符-->%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n

SpringBoot修改日志的默认配置

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

img

img

img

logging.filelogging.pathExampleDescription
(none)(none)只在控制台输出
指定文件名(none)my.log输出日志到my.log文件
(none)指定目录/var/log输出到指定目录的 spring.log 文件中

2、指定配置

给类路径下放上每个日志框架自己的配置文件即可;SpringBoot就不使用他默认配置的了

Logging SystemCustomization
Logbacklogback-spring.xml, logback-spring.groovy, logback.xml or logback.groovy
Log4j2log4j2-spring.xml or log4j2.xml
JDK (Java Util Logging)logging.properties

logback.xml:直接就被日志框架识别了;

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

<springProfile name="staging"><!-- configuration to be enabled when the "staging" profile is active -->可以指定某段配置只在某个环境下生效
</springProfile>
  • 测试
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"><!--日志输出格式:%d表示日期时间,%thread表示线程名,%-5level:级别从左显示5个字符宽度%logger{50} 表示logger名字最长50个字符,否则按照句点分割。 %msg:日志消息,%n是换行符--><layout class="ch.qos.logback.classic.PatternLayout">
<!--开发环境--><springProfile name="dev"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern></springProfile>
<!--非开发环境--><springProfile name="!dev"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ==== [%thread] ==== %-5level %logger{50} - %msg%n</pattern></springProfile></layout></appender>

直接运行就是非开发环境

img

切换到开发环境

img

或者在配置那里填写 --spring.profiles.active=dev

结果:

img

img

PS:

如果使用logback.xml作为日志配置文件,还要使用profile功能,会有以下错误

no applicable action for [springProfile]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么叫缺位_一位父亲能够给予孩子的最好礼物是什么?看看这部电影给出的答案...

作者&#xff1a;流云艺朵原创作品&#xff0c;欢迎个人转载分享。一般而言&#xff0c;在一个普通有子女的家庭里&#xff0c;父亲和母亲对于孩子来说都是这个世界上最亲近的人&#xff0c;最熟悉的人&#xff0c;最依赖的人。可是如果稍微留意一下网络中各种有关养育孩子&…

计算机检测维修与数据恢复试卷,计算机检测维修与数据恢复技术及应用原稿(范文1)...

《计算机检测维修与数据恢复技术及应用(原稿).doc》由会员分享&#xff0c;可免费在线阅读全文&#xff0c;更多与《计算机检测维修与数据恢复技术及应用(原稿)》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。1、的故障也会出现在人们使用计算机的过程当中。计…

SpringBoot通过yml和xml文件配置日志输出

SpringBoot中默认使用Logback进行日志输出&#xff0c;可以同时使用通过logback的配置文件logback.xml或是SpringBoot框架的配置文件application.yml进行配置。 通过logback.xml配置 <?xml version"1.0" encoding"UTF-8"?> <configuration de…

轴只显示5个刻度_告别大象腿,迎接魅力美腿,变身女王你只需5个方法

告别大象腿&#xff0c;迎接魅力美腿&#xff0c;变身女王你只需5个方法&#xff01;第一个方法&#xff1a;仰卧抬腿仰卧抬腿可以帮助你练出美腿&#xff0c;这个动作可以迅速燃烧你的脂肪&#xff0c;并且让你的腿部变得紧致有弹性、修长有线条&#xff0c;那我们又要怎么进行…

华为6x手机计算机软件没有了,只用一招,教你将华为手机变成电脑,这波操作没几个人知道...

原标题&#xff1a;只用一招&#xff0c;教你将华为手机变成电脑&#xff0c;这波操作没几个人知道说手机取代mp3&#xff0c;mp4&#xff0c;平板数码相机并不合适&#xff0c;不过也差不多了。不过呢手机取代电脑目前还是处于理论阶段。这两天华为在内侧云电脑&#xff0c;在…

浅谈String str = ““ 和 new String()的区别

关于String类的知识经常出现在面试题中&#xff0c;在此先记录自己的理解。 首先明白一个事&#xff0c;java存在一个常量池&#xff0c;可以用来存储字符串常量。 1 创建的字符串变量在内存中的区别 两者看似都是创建了一个字符串对象&#xff0c;但在内存中确是各有各的想…

乐高机器人教室布置图片大全_圣诞节手抄报内容简单图片漂亮

圣诞节手抄报:圣诞节手抄报内容简单图片漂亮-圣诞节手抄报。 简单好看的超多套圣诞节手抄报高清图片模板 小学圣诞节手抄报大全&#xff01;简单漂亮全都有 一、动手办报&#xff0c;尝试实践&#xff1a;1、学生独立排版2、展示学生排好版的报纸&#xff0c;欣赏各类风格不同的…

计算机控制技术实际PID控制,计算机控制技术数字PID.doc

计算机控制技术数字PID计算机控制技术实验报告题目&#xff1a;数字PID仿真姓名&#xff1a;学号&#xff1a;班级&#xff1a;2014年05月18日一、仿真设计的目的3二、主要任务及仿真要求3三、整定方法4四、数字PID控制器4五、仿真框图及增量式算法的流程图6六、各个模型的输出…

String s1=new String(“abc“); 和String s1=“abc“区别

在讨论他们的区别时&#xff0c;我们要知道java中的内存&#xff0c;主要分为堆和栈。栈中一般存放的是java中的基本数据变量 比如 int&#xff0c;double&#xff0c;float 还存放了对象的引用变量 如 Person person new Person&#xff08;&#xff09; 中的 &#xff08;Per…

flash动画制作作品_flash施工动画制作应该展现哪些内容

伴随施工方案演示动画的不断应用&#xff0c;越来越多的人认识到其中的功效&#xff0c;施工动画通过电脑技术将建筑过程演示出来&#xff0c;能够对建筑工地和施工过程进行详细的了解&#xff0c;避免施工过程中的一些错误&#xff0c;提高施工的安全性和工程的质量。作为施工…

计算机硬件可以干嘛,鲁大师有什么用?鲁大师可以干嘛?

相信很多网友新买一台电脑都会下载安装鲁大师&#xff0c;借助鲁大师来对电脑进行硬件检测、电脑优化、驱动管理以及硬件跑分操作&#xff0c;然而这些功能也是鲁大师软件的特色&#xff0c;下面将详细介绍鲁大师有什么用&#xff1f;鲁大师到底能干吗&#xff1f;1、自动硬件检…

python爬虫记录时间_Python新手写爬虫全过程记录分析

目标网站&#xff1a;http://bohaishibei.com/post/category/main/(一个很有趣的网站&#xff0c;一段话配一个图&#xff0c;老有意思了&#xff5e;)网站形式如下&#xff1a;目标&#xff1a;把大的目标分为几个小的目标。因为第一次干这个&#xff0c;所以对自己能力很清楚…

JAVA之编译期和运行期区别

编译期&#xff1a;检查是否有语法错误&#xff0c;如果没有就将其翻译成字节码文件。即.class文件。 运行期&#xff1a;java虚拟机分配内存&#xff0c;解释执行字节码文件。 从以下代码开始说明&#xff0c;欢迎大家指正 可以思考下&#xff0c;第一行跟第二行在编译时期有…

中国地质大学计算机地理信息学院,英文主页 软件工程、计算机科学与技术、地理信息科学等相关专业学生 中国地质大学(武汉)教师个人主页系统...

Associate professorSupervisor of Masters CandidatesHonors and Titles :中国地质大学第六届三育人标兵&#xff1b;中国地质大学首届朱训青年教师教育奖励基金&#xff1b;2003、2005、2008、2014、2015、2018年度获中国地质大学信息工程学院考核院/校级优秀。Gender :MaleE…

Java 设计模式——组合模式

概述 有时我们可能会被要求处理一个层级结构明显的对象&#xff0c;比如上下级的公司员工、比如层级嵌套的文件夹&#xff0c;还有丰富多彩的美食菜单。可是&#xff0c;我们可能要屡试不爽地编写深度搜索代码、要小心翼翼地编写递归逻辑。现在你可以忘掉这些&#xff0c;学习…

python分析犯罪数据_使用 SparkSQL 分析纽约市犯罪数据

在实验《使用 SparkSQL 分析纽约市犯罪数据》时候创建 DataFrame 并注册成表&#xff0c;报错&#xff01;sqlContext.createDataFrame(Crimes).registerTempTable("Crimes")17/11/10 07:55:17 ERROR Executor: Exception in task 0.0 in stage 0.0 (TID 0)org.apach…

计算机硬件四则运算实验,实验一四则运算(INTERNET).pdf

123456电工电子实验中心实验报告课程名称&#xff1a; 计算机硬件技术基础实验实验名称&#xff1a; 实验一 四则运算姓名&#xff1a; 学号:评定成绩&#xff1a; 审阅教师&#xff1a;实验时间&#xff1a;123456123456一、 实验目的要求1. 熟悉汇编语言的框架结构&#xff0…

关于海康官网接口文档中:取流URL有效时间为5分钟表述歧义的说明

在海康官方在线接口文档中&#xff08;原文链接&#xff1a;https://open.hikvision.com/docs/63f761576c594a309708525e1eefdbdb&#xff09;&#xff0c;关于视频预览接口中&#xff1a;获取监控点预览取流URLv2 &#xff0c;这个接口的接口说明第6条为保证数据的安全性&…

计算机原理课程设计 第二版pdf,计算机组成原理课程设计二.pdf

计算机组成原理设计文档目 录实验简介实验原理 ……………………………………………………………… 2设计原理 ……………………………………………………………… 3实验设备 ……………………………………………………………… 3设计人员 …………………………………………………

调用海康视频接口获取预览取流的URL

开始之前请参考海康官方SDK文档 鉴于前段时间刚接触视频这一块&#xff0c;整理了自己的一些经验&#xff0c;具体的你们还是参考文档来吧 附上文档地址 https://open.hikvision.com/docs/docId?productId5c67f1e2f05948198c909700&curNodeId16741aecc05944a6b0cd1341d68…