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;最依赖的人。可是如果稍微留意一下网络中各种有关养育孩子&…

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

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

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

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

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

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

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

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

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

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

JAVA之编译期和运行期区别

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

Java 设计模式——组合模式

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

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

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

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

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

c if语句多个条件判断顺序_Java中的流程控制语句 (基础篇四)

流程控制就是对事物次序的布置和安排,在程序中就是对代码执行次序的安排和控制程序中的流程控制主要有三种&#xff1a;顺序流程、选择流程、循环流程。顺序流程&#xff1a;比如打印输出的代码按照指定的顺序结构依次排序&#xff0c;打印的结果按照代码的顺序执行打印&#x…

git checkout 会把改动带过去吗_原创 | 操作失误不要慌,这个命令给你的Git一次反悔的机会...

点击上方蓝字&#xff0c;关注并星标&#xff0c;和我一起学技术。今天我们来介绍git当中两个非常非常好用的工具&#xff0c;git show和reflog。这两个命令虽然不是必知必会&#xff0c;但是如果熟练使用可以极大地帮助我们查看代码仓库的问题&#xff0c;以及在我们操作失误的…

计算机指令执行与时序逻辑,时序逻辑系统

时序逻辑电路其任一时刻的输出不仅取决于该时刻的输入&#xff0c;而且还与过去各时刻的输入有关。常见的时序逻辑电路有触发器、计数器、寄存器等。时序逻辑电路在逻辑功能上的特点是任意时刻的输出不仅取决于当时的输入信号&#xff0c;而且还取决于电路原来的状态&#xff0…

flume连接kafka_日志收集系统架构设计:(flume+zookeeper+kafka+php+mysql )

正文内容一、安装jdk二、安装flume三、安装kafka1、zookeeper2、kafka四、启动测试步骤五、目录说明六、日志收集系统设计图七、大数据参考资料推荐一、安装jdk -(版本&#xff1a;1.8.0_191)1.下载&#xff1a;https://www.oracle.com/technetwork/java/javase/downloads/jdk8…

2020班徽设计图案高中计算机,高铁工程学院举办2020级班徽设计大赛

大赛现场12月3日&#xff0c;高铁工程学院团总支第四届“班徽设计”大赛在GB250教室隆重举行&#xff0c;高铁工程学院20级新生各班参赛&#xff0c;20级辅导员代表出席评委席并参与评分。获奖选手领取证书本次比赛采用了线下评分及线上投票相结合的方式。比赛开始&#xff0c;…

Web浏览器没有Flash如何播放RTMP协议直播

各大主流浏览器在很早的时候就已声明 2020 年底不支持 Adobe Flash。所以已经线上运行的项目以及涉及直播的项目&#xff0c;都会涉及一个问题 &#xff1a; “没有 Adobe Flash 在 Web 浏览器端如何播放 RTMP 直播流&#xff1f;” 还好有先见之明&#xff0c;我参与涉及直播的…

video-js RTMP直播

目前主流的几种直播协议 协议传输方式视频封装格式延时数据分段html播放httpflvhttpflv低连续可通过html5解封包播放(flv.js)rtmptcpflv tag低连续不支持dashhttpts文件高切片可通过html5解封包播放(hls.js)hls$1mp4 3gp webm高切片如果dash文件列表是mp4webm文件&#xff0c;…

EJB到底是什么?(通俗易懂白话文)

1. 我们不禁要问&#xff0c;什么是"服务集群"&#xff1f;什么是"企业级开发"&#xff1f; 既然说了EJB 是为了"服务集群"和"企业级开发"&#xff0c;那么&#xff0c;总得说说什么是所谓的"服务 集群"和"企业级开发&…

ABC334 A-F

打的很懒的一场B卡了D看不懂题卡了F没看完题目理解错题意了&#xff0c;状态好差XD UNIQUE VISION Programming Contest 2023 Christmas (AtCoder Beginner Contest 334) - AtCoder A - Christmas Present 题意&#xff1a; 给出两个数B, G问哪个大 题解&#xff1a; 凑数…

华为笔记本matebook13_华为引领“第三代移动办公”新纪元 华为MateBook开启“智慧化办公”新赛道...

&#xfeff;运营商财经网 康钊/文移动互联网的快速兴起&#xff0c;让办公形式不再受时间、地点的限制&#xff0c;笔记本电脑、平板电脑、手机等承担生产力工具作用的电子设备也是越来越多样化&#xff0c;“移动办公”正成为一种不断演化市场趋势。然而&#xff0c;随着移动…