log4j2.xml實用例子


一個多月前,我寫了篇關於log4j.xml配置的文章,點擊此處查看:http://www.cnblogs.com/guogangj/p/3931397.html

最近,我把自己的log4j升級到2.0之后發現之前的配置文件不能用了,於是把舊的配置挪到新的來,挪的過程中遇到了些問題,但一番搜索測試后基本上趨於完美了。老樣子,先上代碼:

<?xml version="1.0" encoding="UTF-8"?>
<!--設置log4j2的自身log級別為warn-->
<configuration status="warn">

    <appenders>
        <console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
        </console>

        <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/hpaasvc/info.log"
                     filePattern="${sys:user.home}/logs/hpaasvc/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
            <Filters>
                <ThresholdFilter level="INFO"/>
                <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
            </Filters>
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
        </RollingFile>

        <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/hpaasvc/warn.log"
                     filePattern="${sys:user.home}/logs/hpaasvc/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
            <Filters>
                <ThresholdFilter level="WARN"/>
                <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
            </Filters>
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
        </RollingFile>

        <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/hpaasvc/error.log"
                     filePattern="${sys:user.home}/logs/hpaasvc/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
            <ThresholdFilter level="ERROR"/>
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
        </RollingFile>

    </appenders>

    <loggers>
        <!--過濾掉spring和hibernate的一些無用的debug信息-->
        <logger name="org.springframework" level="INFO">
        </logger>
        <logger name="org.hibernate" level="INFO">
        </logger>
        <root level="all">
            <appender-ref ref="Console"/>
            <appender-ref ref="RollingFileInfo"/>
            <appender-ref ref="RollingFileWarn"/>
            <appender-ref ref="RollingFileError"/>
        </root>
    </loggers>

</configuration>

這個配置就能達成跟之前一樣的功能,在試驗的過程中發現log4j2比log4j強大了很多,不過這不在本文討論之列。

從配置上看,和log4j 1.x類似,log4j2也有logger,appender等概念,下面重點說說幾個差別:

  1. 配置文件是log4j2.xml,而不是log4j.xml
  2. 獲取用戶HOME目錄的占位符是“${sys:user.home}”,而不是之前的“${user.home}”
  3. RollingFile Appender中,有filePattern屬性,可以更好的指定“卷動”文件的文件名(另外還可以用gzip對文件進行壓縮哦)
  4. 沒有了之前的LevelRangeFilter,現在需要用兩個ThresholdFilter來實現單個log級別的過濾功能
  5. 可以通過SizeBasedTriggeringPolicy trigger來讓文件不至於過大,在我的配置中指定文件尺寸為100,如果超過,就“卷動”

生成的log文件大致如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM