<?xml version="1.0" encoding="UTF-8"?>
<!-- OFF < FATAL < ERROR < WARN < INFO < DEBUG < TRACE < ALL -->
<configuration status="DEBUG">
<Properties>
<Property name="LOG_HOME">log</Property>
<Property name="LOG_NAME">app_name</Property>
</Properties>
<appenders>
<!-- 控制台 -->
<Console name="console" target="SYSTEM_OUT">
<ThresholdFilter level="info" onMatch="ACCEPT"
onMismatch="DENY" />
<PatternLayout charset="UTF-8"
pattern="%d{HH:mm:ss} %-5level [%thread][%file:%line] - %msg%n" />
</Console>
<!-- warn日志文件 -->
<RollingFile name="warnFile" fileName="${LOG_HOME}/${LOG_NAME}-WARN.log"
filePattern="${LOG_HOME}/${LOG_NAME}-WARN.%d{yyyy-MM-dd}.log"
append="true">
<Filters>
<ThresholdFilter level="error" onMatch="DENY"
onMismatch="NEUTRAL" />
<ThresholdFilter level="warn" onMatch="ACCEPT"
onMismatch="DENY" />
</Filters>
<PatternLayout charset="UTF-8"
pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread][%file:%line] - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy
modulate="true" interval="1" />
</Policies>
<DefaultRolloverStrategy max="180" />
</RollingFile>
<!-- error日志文件 -->
<RollingFile name="errorFile"
fileName="${LOG_HOME}/${LOG_NAME}-ERROR.log" filePattern="${LOG_HOME}/${LOG_NAME}-ERROR.%d{yyyy-MM-dd}.log"
append="true">
<ThresholdFilter level="error" onMatch="ACCEPT"
onMismatch="DENY" />
<PatternLayout charset="UTF-8"
pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread][%file:%line] - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy
modulate="true" interval="1" />
</Policies>
<DefaultRolloverStrategy max="180" />
</RollingFile>
<!-- info以上日志文件 -->
<RollingFile name="infoFile"
fileName="${LOG_HOME}/${LOG_NAME}-INFO+.log" filePattern="${LOG_HOME}/${LOG_NAME}-INFO+.%d{yyyy-MM-dd}.log"
append="true">
<ThresholdFilter level="info" onMatch="ACCEPT"
onMismatch="DENY" />
<PatternLayout charset="UTF-8"
pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread][%file:%line] - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy
modulate="true" interval="1" />
</Policies>
<DefaultRolloverStrategy max="180" />
</RollingFile>
<!-- debug以上日志文件 -->
<RollingFile name="debugFile"
fileName="${LOG_HOME}/${LOG_NAME}-DEBUG+.log" filePattern="${LOG_HOME}/${LOG_NAME}-DEBUG+.%d{yyyy-MM-dd}.log"
append="true">
<ThresholdFilter level="debug" onMatch="ACCEPT"
onMismatch="DENY" />
<PatternLayout charset="UTF-8"
pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread][%file:%line] - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy
modulate="true" interval="1" />
</Policies>
<DefaultRolloverStrategy max="180" />
</RollingFile>
</appenders>
<loggers>
<root level="all">
<appender-ref ref="console" />
<appender-ref ref="debugFile" />
<appender-ref ref="infoFile" />
<appender-ref ref="warnFile" />
<appender-ref ref="errorFile" />
</root>
</loggers>
</configuration>

主要是定义了4个RollingFile,使项目运行时能产生4个日志文件,分别代表“只记录warn级日志”、“只记录error级日志”、“记录info及其以上级别的日志”、“记录debug及其以上级别的日志”,既有完整日志,又有分类细化日志。

首先需要明确日志的重要级。

FATAL  ERROR  WARN  INFO  DEBUG  TRACE

越左边的越重要。

不同的RollingFile显示不同级别的日志是通过ThresholdFilter标签配置的,以name为warnFile的RollingFile为例:

<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL" />

代表比error(level)或比error更重要的日志(onMatch),在这个RollingFile中不显示(DENY);比error不重要的日志(onMismatch),在这个RollingFile中是否显示交给其他ThresholdFilter标签来决定(NEUTRAL)。

<ThresholdFilter level="warn" onMatch="ACCEPT"  onMismatch="DENY" />

代表比warn(level)或比warn更重要的日志(onMatch),在这个RollingFile中显示(ACCEPT);比warn不重要的日志(onMismatch),在这个RollingFile中不显示(DENY)。

结合两个ThresholdFilter,最终的结果是只显示warn级的日志。(Deolin开发时一般用不到FATAL和TRACE)

需要感谢两篇博客:

https://www.cnblogs.com/hafiz/p/6170702.html

http://bglmmz.iteye.com/blog/2154490

新的log4j2.xml的更多相关文章

  1. 聊一聊log4j2配置文件log4j2.xml

    一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置(使用Slf4j集成Log4j2构建项目日志系统的完美解决方 ...

  2. log4j2.xml实用例子

    一个多月前,我写了篇关于log4j.xml配置的文章,点击此处查看:http://www.cnblogs.com/guogangj/p/3931397.html 最近,我把自己的log4j升级到2.0 ...

  3. log4j2.xml配置及例子

    1.使用log4j2需要下载包,如下: 2.配置文件可以有三种格式(文件名必须规范,否则系统无法找到配置文件): classpath下名为 log4j-test.json 或者log4j-test.j ...

  4. log4j2的配置文件log4j2.xml笔记

    一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置(使用Slf4j集成Log4j2构建项目日志系统的完美解决方 ...

  5. log4j2配置文件log4j2.xml

    原地址:https://www.cnblogs.com/hafiz/p/6170702.html 1.关于配置文件的名称以及在项目中的存放位置 log4j 2.x版本不再支持像1.x中的.proper ...

  6. log4j2配置文件log4j2.xml详解(转载)

    此博文转载自阿豪聊干货:https://www.cnblogs.com/hafiz/p/6170702.html 一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2. ...

  7. log4j2配置文件log4j2.xml详解

    配置全解 1.缺省默认配置文件 <?xml version="1.0" encoding="UTF-8"?> <Configuration s ...

  8. SpringBoot—整合log4j2入门和log4j2.xml配置详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维.而日志的输出需要有一定的规划,如日志命名.日志大小,日志分 ...

  9. log4j之log4j2.xml使用

    依赖jar包 log4j-api-2.6.2.jar log4j-core-2.6.2.jar log4j-slf4j-impl-2.6.2.jar slf4j-api-1.7.12.jar 在res ...

随机推荐

  1. Git config 使用说明(转)

    原文:https://blog.csdn.net/gdutxiaoxu/article/details/79253737

  2. .NetCore/ .NetFramework 机制

    1.每来一个请求,会启动一个线程. 可以通过下面代码打印出来. 这个线程是主线程,如果用异步,会等待异步线程执行完毕才会返回. 这有个现象,用stmp 发邮件的时候,即使用异步,也会比较卡(选用的邮件 ...

  3. Psychedelic therapy

    Psychedelic therapy Psychedelic therapy早期在美国应该取得了相当大的成功,方法是在给予受试者充分的心理准备后,一次性运用极高剂量的LSD(0.3−0.6毫克),试 ...

  4. 自定义标签之inclusion_tag

    1.在当前app下创建templatetags文件夹 2.在templatetags文件夹下面创建自定义的mytag.py文件 3.在mytag.py文件中的代码 from django.templa ...

  5. nginx的access_log与error_log

     参考文章:https://juejin.im/post/5aa09bb3f265da238f121b6c 本篇文章主要介绍一下 nginx 服务器两种日志查看:access_log.error_lo ...

  6. Linux下安装php开发环境

    先记录下以恶搞教程,回头自己更 https://my.oschina.net/hhly/blog/1547227

  7. java - day016 - IO续(输入输出), 手写双向链表

    课程回顾 对象的创建过程 类加载 加载父类,父类的静态变量分配内存 加载子类,子类的静态变量分配内存 父类静态变量赋值运算, 和静态初始化块 子类静态变量赋值运算, 和子类初始化块 创建对象 创建父类 ...

  8. vsftpd设置虚拟用户

    centos6.5环境 软件安装: yum install vsftpd db4-utils 1. 添加虚拟用户口令文件 #添加一个虚拟用户testvim /etc/vsftpd/vftp_vuser ...

  9. Linux网络编程综合运用之MiniFtp实现(九)

    上次中实现了FTP命令的映射来避免很多if....else的判断,这次主要是开始实现目录列表的传输,先看一下目前实现的: 数据连接创建好之后则开始进行目录列表的传输了,而要传输目录列表,首先要将目录列 ...

  10. k8s的Pod状态和生命周期管理

    Pod状态和生命周期管理   一.什么是Pod? 二.Pod中如何管理多个容器? 三.使用Pod 四.Pod的持久性和终止 五.Pause容器 六.init容器 七.Pod的生命周期 (1)Pod p ...