zoukankan      html  css  js  c++  java
  • 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>    
  • 相关阅读:
    02.规划过程组表格-干系管理计划
    02.规划过程组表格-供方选择标准
    02.规划过程组表格-采购管理计划
    12动态规划运用实例
    11算法策略之动态规划
    10算法策略之贪婪法
    9算法策略之分治法
    8算法策略之枚举法
    7算法策略之递推法
    6数学模型和数学建模
  • 原文地址:https://www.cnblogs.com/jiyukai/p/9419815.html
Copyright © 2011-2022 走看看