spring整合LOG4J2日志
POM文件
<!-- Log Begin -->
<slf4j.version>1.7.24</slf4j.version>
<log4j2.version>2.8.2</log4j2.version>
<jcl.over.version>1.7.6</jcl.over.version>
<jul.over.version>1.7.6</jul.over.version>
<log4j12.api.version>2.8.2</log4j12.api.version>
<!-- Log End -->
<!-- Logger start -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency> <!-- 桥接:告诉Slf4j使用Log4j2 -->
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency> <!-- 桥接:jcl,不是升级不需要 -->
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${jcl.over.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId><!-- 桥接:jul,不是升级不需要 -->
<artifactId>jul-to-slf4j</artifactId>
<version>${jul.over.version}</version>
<scope>runtime</scope>
</dependency>
<dependency><!--适配log4j 1.x,不是升级不需要 -->
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>${log4j12.api.version}</version>
</dependency>
<!-- Logger end -->
配置文件 log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF" monitorInterval="30">
<properties>
<property name="appName">XXXXX</property>
<property name="LOG_HOME">${sys:catalina.home}/logs/XXXXX/${appName}</property>
<!--<property name="LOG_HOME">d:/test/logs/XXXXX/${appName}</property>-->
<property name="errorfilepath">${LOG_HOME}/error.log</property>
<property name="layout">%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5p %c{1.} %l %F - %m%n</property>
<property name="layout2">%d{yyyy/MM/dd HH:mm:ss.SSS} %-5level %c{3.} %L %M - %msg%xEx%n</property>
<property name="layout3">%d{yyyy/MM/dd HH:mm:ss.sss} %-5level %class{36} %L %M - %msg%xEx%n</property>
</properties>
<!-- 定义所有的appenders (输出目的地) -->
<appenders>
<!-- 控制台输出的配置 -->
<Console name="Console" target="SYSTEM_OUT">
<!-- 控制台只输出level级别及以上的信息(onMatch),其他的直接拒绝(onMismatch) ,设置后可屏蔽具体logger的设定-->
<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${layout2}"/>
</Console>
<!-- 文件打印所有信息,适合临时测试使用 ,append="true" 指定追加内容到文件 -->
<File name="log" fileName="${LOG_HOME}/test-temp.log" append="false">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</File>
<!--fileName:当前日期文件的位置和名称
filePattern:指定当发生rolling时,文件的转移和重命名规则
SizeBasedTriggeringPlicy:指定文件体积大于size,出发rolling
DefaultRolloverStrategy:指定最多保存的文件数,默认每个文件夹7个
TimeBasedTriggeringPolicy:该配置需要和filePattern使用%d{yyyy-MM-dd HH-mm}-%i,最小粒度是分钟,则单位为分钟,表示每分钟生成一个新文件
注意:可以通过ThresholdFilter过滤日志级别,可以实现按照不同的日志级别保存到不同的文件中
-->
<RollingFile name="RollingFile" fileName="${LOG_HOME}/app.log"
filePattern="${LOG_HOME}/app.log.%d{yyyy-MM-dd-HH}-%i.log.gz">
<!--filePattern="${errorfilepath}/$${date:yyyy-MM}/app-%d{yyyy-MM-dd HH-mm}-%i.log.gz" -->
<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${layout}"/>
<Policies>
<SizeBasedTriggeringPolicy size="10MB"/>
<!-- 每小时文件rollover -->
<CronTriggeringPolicy schedule="0 0 * * * ?"/>
<!--TimeBasedTriggeringPolicy表示按照时间间隔来进行日志文件的滚动,间隔单位可以是分钟、小时,具体需要根据filePattern的格式来进行判别;-->
<!--例如filePattern="e:/app-%d{yyyy-MM-dd_HH-mm}-%i.out",则表示mm(分钟)为单位;-->
<!--<TimeBasedTriggeringPolicy interval="1" modulate="true"/>-->
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
<DefaultRolloverStrategy max="20">
<!-- 删除策略,basePath表示根文件夹,maxDepth表示路径深度,0表示根目录自身,默认1,仅仅根目录下的文件可访问,删除无法恢复请慎重-->
<Delete basePath="${LOG_HOME}" maxDepth="0">
<IfFileName glob="app.log*.log.gz"/>
<!-- 删除30天前的数据-->
<ifLastModified age="30d"/>
<!-- 访问文件数,保留最新10个文件 exceeds表示删除的文件数量阈值-->
<IfAccumulatedFileCount exceeds="10"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</appenders>
<loggers>
<root level="INFO">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFile"/>
</root>
<logger name="org.springframework" level="ERROR" additivity="false" >
<appender-ref ref="Console"/>
</logger>
<logger name="com.baomidou.mybatisplus" level="INFO" additivity="false" >
<appender-ref ref="Console"/>
</logger>
<logger name="log4j.logger.com.ibatis" level="DEBUG" additivity="false" >
<appender-ref ref="Console"/>
</logger>
<logger name="com.XXXXX" level="DEBUG" additivity="false" >
<appender-ref ref="Console"/>
</logger>
<logger name="com.XXXXX.XXXXXX" level="DEBUG" additivity="false" >
<appender-ref ref="Console"/>
</logger>
<logger name="com.XXXXX.XXXXX.XXXXX" level="DEBUG" additivity="false" >
<appender-ref ref="Console"/>
</logger>
<!--additivity=false 表示不往上继承root,因此没有打印root策略的日志-->
<!--<logger name="org.springframework.core" level="INFO" additivity="false">-->
<!--<appender-ref ref="Console"/>-->
<!--</logger>-->
</loggers>
</configuration>
spring整合LOG4J2日志的更多相关文章
- Spring Boot Log4j2 日志学习
简介 Java 中比较常用的日志工具类,有: Log4j. SLF4j. Commons-logging(简称jcl). Logback. Log4j2(Log4j 升级版). Jdk Logging ...
- Springboot整合log4j2日志全解
目录 常用日志框架 日志门面slf4j 为什么选用log4j2 整合步骤 引入Jar包 配置文件 配置文件模版 配置参数简介 Log4j2配置详解 简单使用 使用lombok工具简化创建Logger类 ...
- SpringBoot 实现整合log4j2日志
关于日志级别 共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF. ...
- SpringBoot整合log4j2进行日志配置及防坑指南
写在前面 最近项目经理要求将原先项目中的日志配置logBack,修改为log4j2,据说是log4j2性能更优于logback,具体快多少,网上有说快10多倍,看来还是很快的,于是新的一波挑战又开始了 ...
- spring boot自定义log4j2日志文件
背景:因为从 spring boot 1.4开始的版本就要用log4j2 了,支持的格式有json和xml两种格式,此次实践主要使用的是xml的格式定义日志说明. spring boot 1.5.8. ...
- jersey2 整合 spring + hibernate + log4j2
整合 spring jersey2 官方还未正式支持 spring4, 但网上有好多支持方案,折腾了一圈后,还是用了 spring3; pom 添加以下依赖配置 <!-- Spring --&g ...
- spring boot整合slf4j-log日志
原文地址:https://blog.csdn.net/u011271894/article/details/75735915 版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...
- Spring学习总结(六)——Spring整合MyBatis完整示例
为了梳理前面学习的内容<Spring整合MyBatis(Maven+MySQL)一>与<Spring整合MyBatis(Maven+MySQL)二>,做一个完整的示例完成一个简 ...
- Spring学习总结(五)——Spring整合MyBatis(Maven+MySQL)一
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中. 使用这个类库中的类, Spring 将会加载必要的MyBatis工厂类和 session 类. 这个类库 ...
随机推荐
- Python_结合Re正则模块爬虫
##### 爬取古诗文import reimport requestsdef parse_page(url): headers = { 'User-Agent':'Mozilla/5.0 (Windo ...
- [NOIp2012]疫情控制 题解
好久没更,强迫自己写一篇. 神 tm 大预言家出的题 注意到如果 \(x\) 小时可以控制住疫情,则 \(\forall x'>x\) 必然也可以控制住疫情,显然答案具有单调性,可以二分答案. ...
- Debian10 / Ubuntu 20.10 /Linux Mint 20安装Microsoft Edge浏览器Dev版(每周更新)
安装方法如下: 打开终端命令,切换到 管理员身份,输入如下安装命令即可在Linux下使用 Microsoft Edge 浏览器了 ## Setup curl https://packages.micr ...
- 使用Maven打包可运行jar和javaagent.jar的区别
简介 javaagent 是 Java1.5 之后引入的新特性,其主要作用是在class被加载之前对其拦截,以插入我们的字节码. java1.5 之前使用的是JVMTI(jvm tool interf ...
- python中的生成器,迭代器及列表生成式
列表生成器: 即List Comprehensions. 在python中,可通过内置的强大有简单的生成式来创建列表.例如创建一个1到10的列表list [1, 2, 3, 4, 5, 6, 7, ...
- phpmyadmin scripts/setup.php 反序列化漏洞(WooYun-2016-199433)
phpmyadmin 2.x版本 POST /scripts/setup.php HTTP/1.1 Host: 192.168.49.2:8080 Accept-Encoding: gzip, def ...
- Nature | 多层次蛋白质组学综合分析冠状病毒侵染宿主细胞的分子机制
冠状病毒是一种自然界普遍存在的单股正链RNA病毒,电镜下呈日冕状或皇冠状,故命名为冠状病毒.在本世纪初短短20年中,共爆发了三次冠状病毒疫情,即2003年SARS-CoV.2012年MERS-CoV和 ...
- Javac 编译器
编译过程 Javac 编译过程大致可以分为1个准备过程和3个处理过程: 准备过程:初始化插入式注解处理器. 解析与填充符号表过程,包括: 词法.语法分析,将源代码的字符流转变为标记集合,构造出抽象语法 ...
- C++ 打印乘法口诀
1 //嵌套循环 乘法口诀 2 #include <iostream> 3 using namespace std; 4 int main() 5 { 6 int i ,j; 7 for ...
- 用传纸条讲 HTTPS
我和小宇早恋了,上课的时候老说话. 老师把我们的座位分得很远,我在第一排,她在最后一排,我们中间隔了很多人. 但我们还是想通过传纸条的方式交流. 我们中间的那些同学,虽然坏心思比较多,但好在可以保证将 ...