springBoot 通过使用log4j2

1.排除 Spring-boot-starter 默认的日志配置

将原本的 spring-boot-starter 改为

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

2.引入log4j2依赖

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

这种,引入的log4j2版本不是最新的,会跟你的springboot引入版本对应,且2.0-2.15之间有bug;

可以自定义引入版本(排除log4j-core和log4j-api,并重新引入最新版本(2.16.0))

<!--log4j2--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId><exclusions><exclusion><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId></exclusion><exclusion><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.16.0</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.16.0</version></dependency>

3.在你项目的resource目录下,跟application.properties同级目录下添加一个配置文件,文件名为 log4j2.xml

参考模板

<?xml version="1.0" encoding="UTF-8"?>
<!--      Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,可以看到log4j2内部各种详细输出
-->
<!-- monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数 -->
<configuration monitorInterval="5"><!-- 日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --><!-- 变量配置 --><Properties><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符%logger{36} 表示 Logger 名字最长36个字符--><property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%-5level}[%thread] %style{%logger{36}}{cyan} : %msg%n" /><!-- 定义日志存储的路径 --><property name="FILE_PATH" value="日志文件存储路径" /><property name="FILE_NAME" value="项目名称" /></Properties><appenders><console name="Console" target="SYSTEM_OUT"><!--输出日志的格式--><PatternLayout pattern="${LOG_PATTERN}" disableAnsi="false" noConsoleNoAnsi="false"/><!--控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/></console><!--这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--><RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性用来指定多久滚动一次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="20MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖 --><DefaultRolloverStrategy max="15"/></RollingFile><!-- 这个会打印出所有的warn及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--><RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性用来指定多久滚动一次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="20MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖--><DefaultRolloverStrategy max="15"/></RollingFile><!-- 这个会打印出所有的error及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--><RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性用来指定多久滚动一次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="20MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖--><DefaultRolloverStrategy max="15"/></RollingFile></appenders><!--Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。--><!--然后定义loggers,只有定义了logger并引入的appender,appender才会生效--><loggers><!--过滤掉spring和mybatis的一些无用的DEBUG信息--><logger name="org.mybatis" level="info" additivity="false"><AppenderRef ref="Console"/></logger><!--监控系统信息--><!--若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。--><Logger name="org.springframework" level="info" additivity="false"><AppenderRef ref="Console"/></Logger><root level="info"><appender-ref ref="Console"/><appender-ref ref="RollingFileInfo"/><appender-ref ref="RollingFileWarn"/><appender-ref ref="RollingFileError"/></root></loggers>
</configuration>

4.在 application.properties 中加入配置文件的扫描位置

logging.config=classpath:log4j2.xml 

img

测试,启动成功。

在这里插入图片描述

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

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

相关文章

java finalize 何时被调用_finalize()方法什么时候被调用?析构函数(final

finalize()方法也叫收尾方法。一旦垃圾回收器准备好释放对象占用的存储空间&#xff0c;首先会去调用finalize()方法①进行一些必要的清理工作(对垃圾回收器不能处理的特殊情况进行处理)(例子在下边)②也有可能使该对象重新被引用&#xff0c;我习惯叫这种作用为复活。注意&…

编程和java是什么关系_C语言和Java编程有什么区别?

C语言和Java编程有什么区别&#xff1f;Java从根本上说是c之后的一种改进语言&#xff0c;纯面向对象的一种编程语言(当然比起Ruby还是差一点)&#xff0c;有了C语言的基础固然对学习Java有帮助&#xff0c;因为在某种程度上Java和C语言是比较接近的。但是如果没有学习过C语言也…

SpringBoot默认日志logback配置解析

SpringBoot默认日志logback配置解析 前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候&#xff0c;是带着下面几个问题来查资料的&#xff0c;你呢 如何引入日志&#xff1f;日志输出格式以及输出方式如何配置&#xff1f;代码中如何使用&#xff1f; 正文…

java lang报错_java.lang.UnsupportedClassVersionError:JDK版本不一致报错

08-15 14:13:29 ERROR doPost(jcm.framework.rmi.RMIServlet:155) -SchedulerService.forceRunJobFlow error.未指定错误&#xff0c;请查看详细信息at jcm.framework.rmi.ClientService.execute(ClientService.java:129)at ...(...)at jcm.flowengine.impl.JobFlowEngine.runJ…

SpringBoot 之Spring Boot Starter依赖包及作用

spring-boot-starter 这是Spring Boot的核心启动器&#xff0c;包含了自动配置、日志和YAML。 spring-boot-starter-amqp 通过spring-rabbit来支持AMQP协议&#xff08;Advanced Message Queuing Protocol. 。 spring-boot-starter-aop 支持面向方面的编程即AOP&#xff0…

java中怎么判断相等_Java中判断相等 (== 与 .equals())

1.Java中有两种判断相等的方法&#xff1a;1.1首先是运算符对于基本类型而言&#xff0c;运算符比较的是值是否相等(本质也是比较的地址&#xff0c;因为常量在常量池中的地址不可改变)int a 3;int b 3;System.out.println(ab);//结果为true对于引用类型而言&#xff0c;运算…

SpringBoot查看和修改依赖的版本

springBoot依赖管理&#xff1a; 1、引入父项目的作用是实现对所有依赖的管理。 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version> &l…

java wait 释放锁_JAVA锁之wait,notify(wait会释放锁,notify仅仅只是通知,不释放锁)...

wait是指在一个已经进入了同步锁的线程内&#xff0c;让自己暂时让出同步锁&#xff0c;以便其他正在等待此锁的线程可以得到同步锁并运行&#xff0c;只有其他线程调用了notify方法(notify并不释放锁&#xff0c;只是告诉调用过wait方法的线程可以去参与获得锁的竞争了&#x…

在IDEA中解决jar包冲突的神操作-必看

在开发过程中&#xff0c;经常会遇到导入jar包后jar包冲突的情况&#xff0c;大家也都知道&#xff0c;解决jar包冲突通常都比较麻烦&#xff0c;要找到多余的依赖&#xff0c;把低版本的依赖去掉。而大家通常能搜到IDEA解决jar包冲突的方法&#xff0c;应该是这样的&#xff1…

java 图片不能正常移动_Java,我的图像不会更新/移动

我对Java的东西是一个新手&#xff0c;但是..在网上阅读了很多内容之后&#xff0c;我一直在努力开发这款游戏并开始使用&#xff0c;我正在使用一些图片。我想通过KeyListener来更新他们的立场以展示运动的过程&#xff0c;我相信。不幸的是&#xff0c;图像仍然在同一个地方&…

MySQL保存或更新 saveOrUpdate

1. 引子 在项目开发过程中&#xff0c;有一些数据在写入时候&#xff0c;若已经存在&#xff0c;则覆盖即可。这样可以防止多次重复写入唯一键冲突报错。下面先给出两个MyBatis配置文件中使用saveOrUpdate的示例 <!-- 单条数据保存 --> <insert id"saveOrUpdat…

Java调用动态库 缺点_java调用动态库(dll)的一些问题

javac1)dos切换到java文件所在目录&#xff0c;使用javac编译出class文件javah的一些问题&#xff1a;1)切换到src目录下2)设置路径命令&#xff1a;set classpathsrc目录的完全路径3)执行 javah 类名(带包的名称)&#xff0c;将生成的文件改名为“testdll.h”4.DLL的创建 :1)创…

分布式事务六种解决方案

前言 事务想必大家并不陌生&#xff0c;至于什么是 ACID&#xff0c;也是老生常谈了。不过为了保证文章的完整性确保所有人都听得懂&#xff0c;我还是得先说说 ACID&#xff0c;然后再来介绍下什么是分布式事务和常见的分布式事务包括 2PC、3PC、TCC、本地消息表、消息事务、…

java判断对象无数据_java 对象属性不能为空判断

如何判断一个对象里的属性是否都为空的怎么判断一个对象里的属性是否都为空的怎么判断一个对象里的属性是否都为空的&#xff0c;或者判断该对象是否是一个实体&#xff01;引用:怎么判断一个对象里的属性是否都为空的&#xff0c;或者判断该对象是否是一个实体&#xff01;我明…

Minor GC、Major GC和Full GC之间的区别

概念&#xff1a; ● 新生代 GC&#xff08;Minor GC&#xff09;&#xff1a;从年轻代空间&#xff08;包括 Eden 和 Survivor 区域&#xff09;回收内存被称为 Minor GC,因为 Java 对象大多都具备朝生夕灭的特性&#xff0c;所以 Minor GC 非常频繁&#xff0c;一般回收速度也…

SpringBoot——实现WebService接口服务端以及客户端开发

文章目录一、服务端代码开发1、pom依赖2、接口类3、接口实现类4、webservice配置文件2、客户端开发&#xff08;1&#xff09;pom依赖&#xff08;2&#xff09;封装客户端方法clientUtil&#xff08;3&#xff09;调用接口类&#xff08;4&#xff09;运行结果我们经常需要在两…

java 磁盘空间_如何使用Java查找剩余的磁盘空间?

Java 1.7的API稍有不同&#xff0c;可用getTotalSpace()&#xff0c;getUnallocatedSpace()和getUsableSpace()方法通过FileStore类查询可用空间。NumberFormat nf NumberFormat.getNumberInstance();for (Path root : FileSystems.getDefault().getRootDirectories()) {Syste…

springboot集成webService开发详解

webService优缺点 webService优点 WebService是一种跨编程语言和跨操作系统平台的远程调用技术远程调用技术&#xff1a;不用担心防火墙的问题 webService缺点 服务端接口方为webservice则客户端也必须使用webservice&#xff0c;双方保持一致因为webservice使用xml传输数据…

WebService就是这么简单

WebService介绍 首先我们来谈一下为什么需要学习webService这样的一个技术吧…. 问题一 如果我们的网站需要提供一个天气预报这样一个需求的话&#xff0c;那我们该怎么做&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f; 天气预报这么一个功能并不是简单的J…

python使用xlrd读取xlsx文件_$ 用python处理Excel文档(1)——用xlrd模块读取xls/xlsx文档...

本文主要介绍xlrd模块读取Excel文档的基本用法&#xff0c;并以一个GDP数据的文档为例来进行操作。1. 准备工作&#xff1a;1. 安装xlrd&#xff1a;pip install xlrd2. 准备数据集&#xff1a;从网上找到的1952~2012年中国国内GDP的数据&#xff0c;数据结构如下&#xff1a;2…