SpringBoot 使用 log4j2

一、新建工程

IDEA 新建SpringBoot工程
IDEA新建SpringBoot工程
选择一些基础依赖
基础依赖包
基础依赖
填写工程名称和项目路径
工程名称和路径

二、工程配置

修改文件编码格式
IDEA设置工程的编码格式
设置Java Compiler
设置Java Compiler
修改maven配置文件路径
修改maven配置文件路径

三、pom.xml的web依赖中排除掉logging依赖,并且引入log4j2依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><!-- 排除掉logging,不使用logback,改用log4j2 --><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
</dependency>
<!-- log4j2 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

四、springboot配置

logging:config: classpath:log4j2.xml

五、log4j2配置文件

<configuration status="OFF" monitorInterval="30"><Properties><Property name="pattern">%d{yyyy-MM-dd HH:mm:ss,SSS}|%p|%c|%L|%m%n</Property><Property name="logPath">logs</Property></Properties><Appenders><!--设置在控制台打印日志--><Console name="console" target="SYSTEM_OUT"><PatternLayout pattern="${pattern}"/></Console><!--设置级别为 DEBUG 日志输出到 debug.log 中--><RollingRandomAccessFile name="debug"immediateFlush="false"fileName="${logPath}/debug.log"filePattern="${logPath}/debug-%d{yyyy-MM-dd}.log"><Filters><!--设置只输出级别为 debug 的日志--><ThresholdFilter level="DEBUG"/><ThresholdFilter level="INFO" onMatch="DENY" onMismatch="NEUTRAL"/></Filters><PatternLayout pattern="${pattern}"/><Policies><!-- 按天生成日志文件--><TimeBasedTriggeringPolicy modulate="true" interval="1"/></Policies><!-- 最多保存日志文件的数目 --><DefaultRolloverStrategy max="15"/></RollingRandomAccessFile><RollingRandomAccessFile name="info"immediateFlush="false"fileName="${logPath}/info.log"filePattern="${logPath}/info-%d{yyyy-MM-dd}.log"><Filters><ThresholdFilter level="INFO"/><ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/></Filters><PatternLayout pattern="${pattern}"/><Policies><TimeBasedTriggeringPolicy modulate="true" interval="1"/></Policies><DefaultRolloverStrategy max="60"/></RollingRandomAccessFile><RollingRandomAccessFile name="warn"immediateFlush="false"fileName="${logPath}/warn.log"filePattern="${logPath}/warn-%d{yyyy-MM-dd}.log"><Filters><ThresholdFilter level="WARN"/><ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/></Filters><PatternLayout pattern="${pattern}"/><Policies><TimeBasedTriggeringPolicy modulate="true" interval="1"/></Policies><DefaultRolloverStrategy max="60"/></RollingRandomAccessFile><RollingRandomAccessFile name="error"immediateFlush="false"fileName="${logPath}/error.log"filePattern="${logPath}/error-%d{yyyy-MM-dd}.log"><PatternLayout pattern="${pattern}"/><Filters><ThresholdFilter level="ERROR"/></Filters><Policies><TimeBasedTriggeringPolicy modulate="true" interval="1"/></Policies><DefaultRolloverStrategy max="60"/></RollingRandomAccessFile><!-- 设置 task_suc 日志 --><RollingRandomAccessFile name="task_suc"immediateFlush="false"fileName="${logPath}/task_suc.log"filePattern="${logPath}/task_suc-%d{yyyy-MM-dd}.log"><PatternLayout pattern="${pattern}"/><Policies><TimeBasedTriggeringPolicy modulate="true" interval="1"/></Policies><DefaultRolloverStrategy max="90"/></RollingRandomAccessFile><!-- 设置 task_fail 日志 --><RollingRandomAccessFile name="task_fail"immediateFlush="false"fileName="${logPath}/task_fail.log"filePattern="${logPath}/task_fail-%d{yyyy-MM-dd}.log"><PatternLayout pattern="${pattern}"/><Policies><TimeBasedTriggeringPolicy modulate="true" interval="1"/></Policies><DefaultRolloverStrategy max="90"/></RollingRandomAccessFile></Appenders><Loggers><Logger name="com.example.log4j2demo" level="DEBUG" additivity="true"><AppenderRef ref="debug"/><AppenderRef ref="info"/><AppenderRef ref="warn"/><AppenderRef ref="error"/></Logger><!-- org.springframework 只输出 ERROR 级别以上的日志 --><Logger name="org.springframework" level="ERROR"/><!-- org.apache 只输出 ERROR 级别以上的日志 --><Logger name="org.apache" level="ERROR"/><!-- task_suc 日志 --><Logger name="task_suc" additivity="true"><AppenderRef ref="task_suc"/></Logger><!-- task_fail 日志 --><Logger name="task_fail" additivity="true"><AppenderRef ref="task_fail"/></Logger><Root level="DEBUG"><AppenderRef ref="console"/></Root></Loggers>
</configuration>

注:

1、configuration 标签

<!--
status 级别有8个:ALL,TRACE, DEBUG, INFO, WARN, ERROR ,FATAL,OFF。是帮助开发者找错用的,它可以检测log4j 2的配置文件是否有错,也可以检测到死循环的logger
monitorInterval log4j2 自动检测配置文件的时间间隔(单位:秒)
-->
<configuration status="OFF" monitorInterval="30">

2、Console标签

<!--
设置在控制台打印日志
将输出写到 System.err 或 System.out 。如果想将输出写到System.out,设置Console标签下的target为 SYSTEM_OUT ;如果想将输出写到System.err,设置Console标签下的target为 SYSTEM_ERR
-->
<Console name="console" target="SYSTEM_OUT"><PatternLayout pattern="${pattern}"/>
</Console>

3、日志输出格式

<!--
日志输出格式,每个转换说明符以百分号(%)开头,'%'后面的转换字符有如下:
p (level) 日志级别
c(logger) Logger的Name
C (class) Logger调用者的全限定类名
d (date) 日期
highlight 高亮颜色
l (location) 调用位置
L (line) 行号
m (msg/message) 输出的内容
M (methode) 调用方法 ***
maker marker的全限定名
n 输出平台相关的换行符,如'\n' '\r\n'
pid (processId) 进程ID
level (p)日志级别
r JVM启动后经过的微秒
t (tn/thread/threadName) 线程名称
T (tid/threadId) 线程ID
tp (threadPriority) 线程优先级
x (NDC) 线程Context堆栈
-->
<Property name="pattern">%d{yyyy-MM-dd HH:mm:ss,SSS}|%p|%c|%L|%m%n</Property>

4、RollingRandomAccessFile 标签

<!--
设置级别为 DEBUG 日志输出到 debug.log 中
日志写入策略 immediateFlush log4j2接收到日志事件时,是否立即将日志刷到磁盘。默认为true 。
异步日志将会自动批量刷新到磁盘,所以这里设置为false
-->
<RollingRandomAccessFile name="debug"immediateFlush="false"fileName="${logPath}/debug.log"filePattern="${logPath}/debug-%d{yyyy-MM-dd}.log"><Filters><!--设置只输出级别为 debug 的日志--><ThresholdFilter level="DEBUG"/><ThresholdFilter level="INFO" onMatch="DENY" onMismatch="NEUTRAL"/></Filters><PatternLayout pattern="${pattern}"/><Policies><!--根据时间生成日志文件单位:以文件命名中的时间精度来确定单位。比如 yyyy-MM-dd 单位为天,yyyy-MM-dd-HH 单位为小时interval:时间间隔--><TimeBasedTriggeringPolicy modulate="true" interval="1"/></Policies><!-- 最多保存日志文件的数目 --><DefaultRolloverStrategy max="15"/>
</RollingRandomAccessFile>

RollingRandomAccessFile 为异步日志,RollingFile 为同步日志。

5、Logger 标签

<!-- 整个工程默认日志实例,name=工程名,例如用@Slf4j这个注解或者LoggerFactory.getLogger(XXX.class)的日志实例 -->
<Logger name="com.example.log4j2demo" level="DEBUG" additivity="true"><AppenderRef ref="debug"/><AppenderRef ref="info"/><AppenderRef ref="warn"/><AppenderRef ref="error"/>
</Logger>

六、使用示例

@Slf4j
@SpringBootTest
class Log4j2DemoApplicationTests {private static final Logger sucLog = LoggerFactory.getLogger("task_suc");private static final Logger failLog = LoggerFactory.getLogger("task_fail");private static final Logger sysLog = LoggerFactory.getLogger(Log4j2DemoApplicationTests.class);@Testvoid log4j2() {sucLog.debug("task_suc debug");sucLog.info("task_suc info");sucLog.warn("task_suc warn");sucLog.error("task_suc error");failLog.debug("task_fail debug");failLog.info("task_fail info");failLog.warn("task_fail warn");failLog.error("task_fail error");log.debug("normal debug");log.info("normal info");log.warn("normal warn");log.error("normal error");sysLog.debug("sys debug");sysLog.info("sys info");sysLog.warn("sys warn");sysLog.error("sys error");}}

控制台输出结果:
控制台输出结果

日志文件:
日志文件

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

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

相关文章

springBoot 通过使用log4j2

1.排除 Spring-boot-starter 默认的日志配置 将原本的 spring-boot-starter 改为 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><exclusion><groupId>…

SpringBoot默认日志logback配置解析

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

SpringBoot查看和修改依赖的版本

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

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

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

MySQL保存或更新 saveOrUpdate

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

分布式事务六种解决方案

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

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;运行结果我们经常需要在两…

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…

WebService技术详解CXF

WebService WebService简介 Web Service技术&#xff0c; 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件&#xff0c; 就可相互交换数据或集成。依据Web Service规范实施的应用之间&#xff0c; 无论它们所使用的语言、 平台或内部协议是什么&…

Java webservice详解

文章目录1 webservice概述2 webservice核心要素2.1 SOAP2.2 WSDL3 webservice的使用场景4 webservice的结构5 Java中的webservice5.1 webservice服务端5.2 webservice客户端6 WDSL文件说明7 webservice 请求与响应监控8 webservice 在Tomcat中发布9 在Spring中使用webservice1 …

hibernate mysql cascade_Hibernate第五篇【inverse、cascade属性详解】

前言上一篇博文已经讲解了一对多和多对一之间的关系了&#xff0c;一对多和多对一存在着关联关系(外键与主键的关系)。本博文主要讲解Inverse属性、cascade属性。这两个属性对关联关系都有影响Inverse属性Inverse属性&#xff1a;表示控制权是否转移..true:控制权已转移【当前一…

spring boot中打包插件spring-boot-maven-plugin和maven-jar-plugin的关联

简介 用spring boot快速开发时&#xff0c;通常用spring-boot-maven-plugin插件将springboot的应用程序打包成jar文件&#xff0c;然后通过java -jar运行&#xff0c;很方便。但是如果是部署到服务器上&#xff0c;每次更改代码后替换的包都比较大&#xff0c;至少30MB以上&am…

Maven父子结构的项目依赖使用以及打包依赖_微服务项目(maven父子级项目)怎么打包

Maven父子结构的项目依赖使用以及打包依赖 1&#xff1a;在父子结构项目中&#xff0c;如果要是用其他模块的类。在当前项目中的pom中 加入 其他模块的配置 <dependency><groupId>com.spring.mySpring</groupId><artifactId>mySpring-utils</artif…

搭建一个完整的微服务项目

一.项目技术架构 1.技术栈 前台技术 Node.js、Npm、Vue.js、WebPack、Vue Cli、Element UI 后台架构 微服务架构&#xff1a;按照功能拆分N多个服务&#xff0c;每个服务可以独立技术选型,独立开发,独立部署,独立运维.&#xff0c;单个服务使用基于ssm的springboot&#xff0…

java 雅思_基于JAVA的雅思考试管理系统的设计与实现(SSH,MySQL)(含录像)

基于JAVA的雅思考试管理系统的设计与实现(SSH,MySQL)(含录像)(任务书,毕业论文12000字,程序代码,MySQL数据库)本文分析了基于JAVA的雅思考试管理系统的设计与实现技术&#xff0c;结合实际提出了本系统的总体结构设计和主要模块的功能实现。本系统分为二个子系统:管理员子系统&…

java开发利器 源码_Java开发的利器: 反编译工具 JD-GUI

老赵说起来也能算个Java程序员&#xff0c;可是写过的Java代码并不多&#xff0c;可老赵实实在在是从程序员干起的。虽然肚子里也装了不少的东西&#xff0c;可作为一件乐此不疲的事情&#xff0c;就是看那些所谓“高人”的代码。高人们的行事风格&#xff0c;十人十样&#xf…

Maven搭建Nexus私服

私服的介绍 1 什么是私服 私服是一种特殊的远程仓库&#xff0c;它是架设在局域网的仓库服务&#xff0c;私服代理广域网上的远程仓库&#xff0c;供局域网使用。 在企业开发中&#xff0c;私服的建设是有必要的&#xff0c;其好处如下&#xff1a; 1.1 节省资金、外网带宽…