一、Log4j2高级配置介绍(1)

    (1)日志输出到文件配置

  1. <!-- 将日志输出到指定位置的文件中 -->
  2. <RollingFile name="RollingFile" fileName="D:/applog/app.log"
  3. filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
  4. <Policies>
  5. <TimeBasedTriggeringPolicy />
  6. </Policies>
  7. </RollingFile>  

  (2)变量配置引用

  1. <!-- 定义下面的引用名 -->
  2. <Properties>
  3. <property name="basePath">D:/applog</property>
  4. <property name="filePath">${basePath}/app.log</property>
  5. </Properties>
  6.  
  7. <RollingFile name="RollingFile" fileName="${filePath}"
  8. filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
  9. <Policies>
  10. <TimeBasedTriggeringPolicy />
  11. </Policies>
  12. </RollingFile>   

  (3)动态配置写入配置属性,log4j2中的参数动态匹配需使用${sys:xxx}

  1. System.setProperty("vmparam", "D:/mylog");
  1. <Properties>
  2. <property name="basePath">${sys:vmparam}</property>
  3. <property name="filePath">${basePath}/app.log</property>
  4. </Properties> 

  (4)滚动机制配置

  1. <!-- 最多备份30天以内||日志文件大小达到100GB的日志||文件数量超过十个,此处为策略限制,Delete中可以按自己需要用正则表达式编写 -->
  2. <DefaultRolloverStrategy>
  3. <Delete basePath="${filePath}" maxDepth="1">
  4. <IfFileName glob="logs_*.log" />
  5. <IfLastModified age="30d" />
  6. <IfAccumulatedFileSize exceeds="100 GB" />
  7. <IfAccumulatedFileCount exceeds="10" />
  8. </Delete>
  9. </DefaultRolloverStrategy>   

  (5)生成策略及压缩配置

  1. <!-- 将日志输出到指定位置的文件中 -->
  2. <RollingFile name="RollingFile" fileName="${filePath}"filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH}-%i.log.gz">
  3. <Policies>
  4. <!-- interval单位为filePattern最后一个单位,此处为6小时,modulate若为true,则日志时间将以0点为边界进行偏移计算,由于加了.gz策略,
        所以此处意思为每隔6小时,便会新生成一个log4j2的压缩文件,当每个文件超过250M时,也会新生成一个log4j2的压缩文件 -->
  5. <TimeBasedTriggeringPolicy interval="6" modulate="true"/>
  6. <SizeBasedTriggeringPolicy size="250 MB"/>
  7. </Policies>
  8. <!-- 滚动策略,日志文件最多保留20个 -->
  9. <DefaultRolloverStrategy max="20"/>
  10. </RollingFile> 

  (6)限定第三方日志系统级别

  1. <!-- 第三方日志系统 -->
  2. <logger name="org.springframework" level="INFO"/>
  3. <logger name="io.netty" level="warn"/>
  4. <logger name="org.apache.http" level="warn"/>
  5. <logger name="org.mongodb.driver" level="INFO"/>
  6. <logger name="org.jboss.netty" level="warn"/>
  7. <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或更高版本

  1. <Loggers>
  2. <Root level="info">
  3. <!-- <AppenderRef ref="Console" /> -->
  4. <AppenderRef ref="RollingFile" />
  5. </Root>
  6.  
  7. <AsyncLogger name="AsyncLogger" level="trace">
  8. <appender-ref ref="Console" />
  9. <appender-ref ref="RollingFile" />
  10. </AsyncLogger>
  11.  
  12. <asyncRoot level="trace">
  13. <appender-ref ref="Console" />
  14. </asyncRoot>
  15. </Loggers>

  (9)父子关系配置:如果希望某个logger,如第三方的组件输出的日志级别和root中设置的级别不同,该如何配置,如下,root和spring的logger都引用了RollingFile,但是定义的级别不同,那么此时会打印哪个呢?logger中有个节点additivity="false",就是控制此部分信息不往root节点传输的,只认本logger。

  1. <Root level="info">
  2. <!-- <AppenderRef ref="Console" /> -->
  3. <AppenderRef ref="RollingFile" />
  4. </Root>
  5.  
  6. <!-- 第三方日志系统 -->
  7. <logger name="org.springframework" level="trace" additivity="false">
  8. <appender-ref ref="RollingFile" />
  9. </logger>

  (10)过滤器Filter:log4j2提供了Filters标签,使经过appender的日志,能根据需求进行过滤,如下展示的为分别日志等级过滤器,正则表达式过滤器和时间过滤器。ACCEPT和DENY字面意思不难理解,即接受或拒绝过滤条件。但是在组合过滤器中,如果用接受ACCEPT的话,日志信息就会直接写入日志文件,后续的过滤器不再进行过滤。所以,在组合过滤器中,接受使用NEUTRAL(中立),被第一个过滤器接受的日志信息,会继续用后面的过滤器进行过滤,只有符合所有过滤器条件的日志信息,才会被最终写入日志文件。

  1. <Filters>
  2. <ThresholdFilter level="TRACE" onMatch="NEUTRAL" onMismatch="DENY"/>
  3. <RegexFilter regex=".* test .*" onMatch="NEUTRAL" onMismatch="DENY"/>
  4. <TimeFilter start="05:00:00" end="05:30:00" onMatch="ACCEPT" onMismatch="DENY"/>
  5. </Filters>

log4j2高级配置(1)的更多相关文章

  1. Sonatype Nexus高级配置

    Sonatype Nexus的安装配置参见:CentOS系统中安装Nexus并导入已有的构件库.Nexus内置了Jetty容器,${NEXUS_HOME}/bin/jsw目录下包含了各个操作系统的启动 ...

  2. [转]JEXUS的高级配置

    转自:http://www.cnblogs.com/xiaodiejinghong/archive/2013/04/14/3019660.html 前一回合,我们对服务器软件Jexus作了简单的介绍, ...

  3. Cisco ASA 高级配置

    Cisco ASA 高级配置 一.防范IP分片攻击 1.Ip分片的原理: 2.Ip分片的安全问题: 3.防范Ip分片. 这三个问题在之前已经详细介绍过了,在此就不多介绍了.详细介绍请查看上一篇文章:I ...

  4. vim的一些高级配置

    今天有幸看到一篇博文,有一些vim的高级配置 在linux或者unix下面的.vimrc文件中,在其中可以添加如下片段,可以实现解释上面你说的那些高级用法 " Ctrl + K 插入模式下光 ...

  5. IE高级配置中,存在SSL支持协议,例如SSL TLS。

    IE高级配置中,存在SSL支持协议,例如SSL TLS. 其在注册表的路径为:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\I ...

  6. SpringCloud系列十:SpringCloudConfig 高级配置(密钥加密处理(JCE)、KeyStore 加密处理、SpringCloudConfig 高可用机制、SpringCloudBus 服务总线)

    1.概念:SpringCloudConfig 高级配置 2.具体内容 在 SpringCloudConfig 之中考虑到所有配置文件都暴露在远程仓库之中的安全性问题,所以提供有安全访问的处理机制,这样 ...

  7. log4j2的配置及使用

    log4j2与log4j1的不同点(不完整): 前者配置文件格式多样性.log4j2的配置文件可以是xml,也可以是json. 在不修改web.xml的前提下,前者配置文件的命名可以为log4j2.x ...

  8. Spring_总结_04_高级配置(六)_Bean的初始化和销毁

    一.前言 本文承接上一节:Spring_总结_04_高级配置(五)_运行时注入值

  9. Spring_总结_04_高级配置(五)_运行时注入值

    一.前言 本文承接上一节:Spring_总结_04_高级配置(四)_bean的作用域 当讨论依赖注入的时候,我们通常所讨论的是将一个bean引用注入到另一个bean的属性或者构造参数中.它通常指的是将 ...

随机推荐

  1. laravel 查询构建器(连贯操作)

    注:laravel 查询返回行的都是 php 的 stdClass 对象实例,不是数组!!!! 1)查询多行(get) DB::table('table_name')->get(); 带偏移和限 ...

  2. 解决IE中img.onload失效的方法

    解决IE中img.onload失效的方法 - CoffeeCat's IT Blog - IT博客 http://www.cnitblog.com/CoffeeCat/archive/2008/02/ ...

  3. ZooKeeper(七)-- ZK原生API实现分布式锁

    一.使用场景 在分布式应用,往往存在多个进程提供同一服务.这些进程有可能在相同的机器上,也有可能分布在不同的机器上. 如果这些进程共享了一些资源,可能就需要分布式锁来锁定对这些资源的访问. 二.实现分 ...

  4. easyui 时间定格为 时分

    $.fn.datetimebox.defaults.formatter = function (date) { console.log('dt formatting ' + date); if (!( ...

  5. Sencha Cmd创建Ext JS示例项目

    Sencha提供了免费的Cmd工具,可以用来创建Ext JS项目并提供了一些便利的功能. Sencha也在官方文档中提供了一个示例来演示如何创建一个Sample Login App. 本文就介绍一下这 ...

  6. Oracle12cWindows安装、介绍及简单使用(图文)

    1.下载 地址为:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html 含企业版和 ...

  7. VC++ 6.0创建MFC工程时的初级备要点(二)

        在看到一个MFC工程时,可能根据上一篇文章已经知道了哪些是重要的,那些是在创建工程的时候已经被初始化的!!下面介绍一下在看代码的过程的策略!!这里假设创建的基于多对话框的MFC工程名为test ...

  8. 域名与IP对应,解决只能IP访问不能域名访问的问题

    sudo vim /etc/hosts 127.0.0.1 localhost 127.0.1.1 ubuntu 192.168.1.60 api.sscmp.com

  9. [Window] .MUS 0x80070422 Error

    Window Update 服务没有开启.开启后可以执行如下命令: for /f %%i in ('dir D:\Hotfix\*.msu /S /B /ON') do wusa.exe %%i /q ...

  10. ExecutorService的四种线程池

    转自:https://www.cnblogs.com/zhaoyan001/p/7049627.html 1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new ...