log4j2高级配置(1)
一、Log4j2高级配置介绍(1)
(1)日志输出到文件配置
<!-- 将日志输出到指定位置的文件中 -->
<RollingFile name="RollingFile" fileName="D:/applog/app.log"
filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
(2)变量配置引用
<!-- 定义下面的引用名 -->
<Properties>
<property name="basePath">D:/applog</property>
<property name="filePath">${basePath}/app.log</property>
</Properties> <RollingFile name="RollingFile" fileName="${filePath}"
filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
(3)动态配置写入配置属性,log4j2中的参数动态匹配需使用${sys:xxx}
System.setProperty("vmparam", "D:/mylog");
<Properties>
<property name="basePath">${sys:vmparam}</property>
<property name="filePath">${basePath}/app.log</property>
</Properties>
(4)滚动机制配置
<!-- 最多备份30天以内||日志文件大小达到100GB的日志||文件数量超过十个,此处为策略限制,Delete中可以按自己需要用正则表达式编写 -->
<DefaultRolloverStrategy>
<Delete basePath="${filePath}" maxDepth="1">
<IfFileName glob="logs_*.log" />
<IfLastModified age="30d" />
<IfAccumulatedFileSize exceeds="100 GB" />
<IfAccumulatedFileCount exceeds="10" />
</Delete>
</DefaultRolloverStrategy>
(5)生成策略及压缩配置
<!-- 将日志输出到指定位置的文件中 -->
<RollingFile name="RollingFile" fileName="${filePath}"filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH}-%i.log.gz">
<Policies>
<!-- interval单位为filePattern最后一个单位,此处为6小时,modulate若为true,则日志时间将以0点为边界进行偏移计算,由于加了.gz策略,
所以此处意思为每隔6小时,便会新生成一个log4j2的压缩文件,当每个文件超过250M时,也会新生成一个log4j2的压缩文件 -->
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
<!-- 滚动策略,日志文件最多保留20个 -->
<DefaultRolloverStrategy max="20"/>
</RollingFile>
(6)限定第三方日志系统级别
<!-- 第三方日志系统 -->
<logger name="org.springframework" level="INFO"/>
<logger name="io.netty" level="warn"/>
<logger name="org.apache.http" level="warn"/>
<logger name="org.mongodb.driver" level="INFO"/>
<logger name="org.jboss.netty" level="warn"/>
<logger name="org.springframework.data.redis" level="INFO"/>
(7)Layout格式介绍(此处参考官方API)
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html
(8)异步日志:必须引入disruptor-3.0.0.jar或更高版本
<Loggers>
<Root level="info">
<!-- <AppenderRef ref="Console" /> -->
<AppenderRef ref="RollingFile" />
</Root> <AsyncLogger name="AsyncLogger" level="trace">
<appender-ref ref="Console" />
<appender-ref ref="RollingFile" />
</AsyncLogger> <asyncRoot level="trace">
<appender-ref ref="Console" />
</asyncRoot>
</Loggers>
(9)父子关系配置:如果希望某个logger,如第三方的组件输出的日志级别和root中设置的级别不同,该如何配置,如下,root和spring的logger都引用了RollingFile,但是定义的级别不同,那么此时会打印哪个呢?logger中有个节点additivity="false",就是控制此部分信息不往root节点传输的,只认本logger。
<Root level="info">
<!-- <AppenderRef ref="Console" /> -->
<AppenderRef ref="RollingFile" />
</Root> <!-- 第三方日志系统 -->
<logger name="org.springframework" level="trace" additivity="false">
<appender-ref ref="RollingFile" />
</logger>
(10)过滤器Filter:log4j2提供了Filters标签,使经过appender的日志,能根据需求进行过滤,如下展示的为分别日志等级过滤器,正则表达式过滤器和时间过滤器。ACCEPT和DENY字面意思不难理解,即接受或拒绝过滤条件。但是在组合过滤器中,如果用接受ACCEPT的话,日志信息就会直接写入日志文件,后续的过滤器不再进行过滤。所以,在组合过滤器中,接受使用NEUTRAL(中立),被第一个过滤器接受的日志信息,会继续用后面的过滤器进行过滤,只有符合所有过滤器条件的日志信息,才会被最终写入日志文件。
<Filters>
<ThresholdFilter level="TRACE" onMatch="NEUTRAL" onMismatch="DENY"/>
<RegexFilter regex=".* test .*" onMatch="NEUTRAL" onMismatch="DENY"/>
<TimeFilter start="05:00:00" end="05:30:00" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
log4j2高级配置(1)的更多相关文章
- Sonatype Nexus高级配置
Sonatype Nexus的安装配置参见:CentOS系统中安装Nexus并导入已有的构件库.Nexus内置了Jetty容器,${NEXUS_HOME}/bin/jsw目录下包含了各个操作系统的启动 ...
- [转]JEXUS的高级配置
转自:http://www.cnblogs.com/xiaodiejinghong/archive/2013/04/14/3019660.html 前一回合,我们对服务器软件Jexus作了简单的介绍, ...
- Cisco ASA 高级配置
Cisco ASA 高级配置 一.防范IP分片攻击 1.Ip分片的原理: 2.Ip分片的安全问题: 3.防范Ip分片. 这三个问题在之前已经详细介绍过了,在此就不多介绍了.详细介绍请查看上一篇文章:I ...
- vim的一些高级配置
今天有幸看到一篇博文,有一些vim的高级配置 在linux或者unix下面的.vimrc文件中,在其中可以添加如下片段,可以实现解释上面你说的那些高级用法 " Ctrl + K 插入模式下光 ...
- IE高级配置中,存在SSL支持协议,例如SSL TLS。
IE高级配置中,存在SSL支持协议,例如SSL TLS. 其在注册表的路径为:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\I ...
- SpringCloud系列十:SpringCloudConfig 高级配置(密钥加密处理(JCE)、KeyStore 加密处理、SpringCloudConfig 高可用机制、SpringCloudBus 服务总线)
1.概念:SpringCloudConfig 高级配置 2.具体内容 在 SpringCloudConfig 之中考虑到所有配置文件都暴露在远程仓库之中的安全性问题,所以提供有安全访问的处理机制,这样 ...
- log4j2的配置及使用
log4j2与log4j1的不同点(不完整): 前者配置文件格式多样性.log4j2的配置文件可以是xml,也可以是json. 在不修改web.xml的前提下,前者配置文件的命名可以为log4j2.x ...
- Spring_总结_04_高级配置(六)_Bean的初始化和销毁
一.前言 本文承接上一节:Spring_总结_04_高级配置(五)_运行时注入值
- Spring_总结_04_高级配置(五)_运行时注入值
一.前言 本文承接上一节:Spring_总结_04_高级配置(四)_bean的作用域 当讨论依赖注入的时候,我们通常所讨论的是将一个bean引用注入到另一个bean的属性或者构造参数中.它通常指的是将 ...
随机推荐
- IOS -执行时 (消息传递 )
一 函数调用概述 Objective-C不支持多重继承(同Java和Smalltalk),而C++语言支持多重继承. Objective-C是动态绑定,它的类库比C++要easy操作. Ob ...
- mybatis由浅入深day01_4入门程序_4.6根据用户id(主键)查询用户信息
4 入门程序 4.1 需求 根据用户id(主键)查询用户信息 根据用户名称模糊查询用户信息 添加用户 删除 用户 更新用户 4.2 环境 java环境:jdk1.7.0_72 eclipse:indi ...
- POJ 1321 棋盘问题(状态压缩DP)
不总结的话, 同一个地方会 WA 到死 思路: 状态压缩 DP. 1. s 表示压缩状态, 若第 i 列放了棋子, 那么该列置 1, 否则该列置 0. 假如 s = 3(0x011) 那么表示棋盘的第 ...
- 关于直播学习笔记-005-nginx-rtmp-win32在Win10上使用
在Win10上使用nginx-rtmp-win32会提示文件路径问题. 可以将nginx-rtmp-win32拷贝到用户目录文件夹之中. 在命令行中执行nginx.exe程序
- linux 添加交换分区
[操作简介] 增加swap分区方法: 1.新建磁盘分区作为swap分区 2.用文件作为swap分区 (操作更简单,我更常用) 下面介绍这两种方法:(都必须用root权限,操作过程应该小心谨慎.) ...
- linux--GCC用法
1简介 2简单编译 2.1预处理 2.2编译为汇编代码(Compilation) 2.3汇编(Assembly) 2.4连接(Linking) 3多个程序文件的编译 4检错 5库文件连接 5.1编译成 ...
- Python查询数据库时候遇到的乱码问题
今天在看Python连接数据库的内容,然后遇到了最常遇到的字符乱码的状况,这真的很烦人,由于我用的是3.6的版本,,默认的是utf-8,如果是3以下的版本,请在文件开头加一句代码 #encoding= ...
- js如何判断不同的操作系统
<html> <head> <title>判断操作系统</title> <script type="text/javascript&qu ...
- 理解Scroller
任何一个控件都是可以滚动的,因为在View类当中有scrollTo()和scrollBy()这两个方法,但使用这两个方法完成的滚动效果是跳跃式的,没有任何平滑滚动的效果.而Scroller正是实现平滑 ...
- 【BZOJ5102】[POI2018]Prawnicy 堆
[BZOJ5102][POI2018]Prawnicy Description 定义一个区间(l,r)的长度为r-l,空区间的长度为0. 给定数轴上n个区间,请选择其中恰好k个区间,使得交集的长度最大 ...