新的log4j2.xml
<?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的更多相关文章
- 聊一聊log4j2配置文件log4j2.xml
一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置(使用Slf4j集成Log4j2构建项目日志系统的完美解决方 ...
- log4j2.xml实用例子
一个多月前,我写了篇关于log4j.xml配置的文章,点击此处查看:http://www.cnblogs.com/guogangj/p/3931397.html 最近,我把自己的log4j升级到2.0 ...
- log4j2.xml配置及例子
1.使用log4j2需要下载包,如下: 2.配置文件可以有三种格式(文件名必须规范,否则系统无法找到配置文件): classpath下名为 log4j-test.json 或者log4j-test.j ...
- log4j2的配置文件log4j2.xml笔记
一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置(使用Slf4j集成Log4j2构建项目日志系统的完美解决方 ...
- log4j2配置文件log4j2.xml
原地址:https://www.cnblogs.com/hafiz/p/6170702.html 1.关于配置文件的名称以及在项目中的存放位置 log4j 2.x版本不再支持像1.x中的.proper ...
- log4j2配置文件log4j2.xml详解(转载)
此博文转载自阿豪聊干货:https://www.cnblogs.com/hafiz/p/6170702.html 一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2. ...
- log4j2配置文件log4j2.xml详解
配置全解 1.缺省默认配置文件 <?xml version="1.0" encoding="UTF-8"?> <Configuration s ...
- SpringBoot—整合log4j2入门和log4j2.xml配置详解
关注微信公众号:CodingTechWork,一起学习进步. 引言 对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维.而日志的输出需要有一定的规划,如日志命名.日志大小,日志分 ...
- 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 ...
随机推荐
- Comet OJ Contest 4
A:签到. #include<bits/stdc++.h> using namespace std; #define ll long long #define inf 1000000010 ...
- C# ObservableCollection两个字段排序的情况
相对于System.Linq的OrderBy及OrderByDescending方法,调用后产生IOrderedEnumberable对象,这个对象为排序后的返回值,但原对象未发生变化. 试想,有这种 ...
- Django-cms show_menu参数解释
当页面结构设置(/admin/cms/page)如下: - Home (level=0) - About Us (level=1) - About Company Services (level=2) ...
- Linux日志查看
Linux日志查看: 1.Last -a 把从何处登入系统的主机名称或IP地址,显示在最后一行.-d 指定记录文件.指定记录文件.将IP地址转换成主机名称.-f <记录文件> 指定记录文 ...
- linux IPC简单学习
Posix和system v区别 所谓的IPC(进程间通信)指的是消息队列,共享内存,信号量3种机制合并起来,当然,这是个狭义的概念,只包含这三种.IPC又可以分为system v进程间通信和posi ...
- sed 删除文本中的内容
删除命令对照表 练习例子 删除/etc/passwd中的第15行 sed -i '1d' passwd 删除/etc/passwd中的8行到14行的所有内容 sed -i '8,14d' passwd ...
- 网络编程socketserver
一.网络编程回顾 tcp是流式传输,字节流,数据与数据之间没有边界 优点:不限定长度,可靠传输 缺点:慢,和一端的通信连接conn会一直占用通信资源 udp协议式面向数据包的传输 优点:快,由于不需要 ...
- 定制ubuntu镜像
使用ubuntu server 18.04 lts版镜像 作为源镜像定制目标镜像, 工具cubic, 定制目标镜像, 使得一些服务装机后即可使用,例如redis, mysql, monggodb ,s ...
- 交付Dubbo微服务到kubernetes集群
1.基础架构 1.1.架构图 Zookeeper是Dubbo微服务集群的注册中心 它的高可用机制和k8s的etcd集群一致 java编写,需要jdk环境 1.2.节点规划 主机名 角色 ip hdss ...
- 聊天程序——基于Socket、Thread (二)
聊天程序简述 1.目的:主要是为了阐述Socket,以及应用多线程,本文侧重Socket相关网路编程的阐述.如果您对多线程不了解,大家可以看下我的上一篇博文浅解多线程 . 2.功能:此聊天程序功能实现 ...