log4j2日誌配置

1.pom依賴引入web

<properties> 
<log4j2.version>2.7</log4j2.version>
 </properties> 
<dependencies> 
<dependency> 
<groupId>org.apache.logging.log4j</groupId> 
<artifactId>log4j-api</artifactId>
 <version>${log4j2.version}</version> 
</dependency>
 <dependency>
 <groupId>org.apache.logging.log4j</groupId>
 <artifactId>log4j-core</artifactId>
 <version>${log4j2.version}</version>
 </dependency> 
</dependencies> 
<build> 
<plugins> 
<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-compiler-plugin</artifactId>
 <version>2.3.2</version> 
<configuration>
 <source>1.7</source>
 <target>1.7</target> 
</configuration> 
</plugin> 
</plugins> 
</build>

 

3.src目錄下加入log4j2.xml,配置好相關屬性;正則表達式

4.需用的代碼中加入static Logger sLogger = LogManager.getLogger(LogManage.class.getName()); sLogger.debug(strLog);便可調用使用。apache

現就log4j2.xml註釋說明:api

root標籤爲log的默認輸出形式,若是一個類的log沒有在loggers中明確指定其輸出lever與格式,那麼就會採用root中定義的格式。
Appenders標籤,其實就是輸出,有各類擴展組件,主要類型有:
ConsoleAppender   輸出結果到控制檯
FileAppender  輸出結果到指定文件
RollingFileAppender   一樣輸出結果到文件,區別是用一個buffer,所以速度會快點
這裏介紹下RollingRandomessFile 的相關屬性:
name:表示該appender的名稱
fileName:表示輸出的文件的路徑
append:是否追加,true表示追加內容到所在的日誌,false表示每次都覆蓋
filePattern:表示當日志到達指定的大小或者時間,產生新日誌時,舊日誌的命名路徑。
PatternLayout:和log4j1同樣,指定輸出日誌的格式
Policies:策略,表示日誌何時應該產生新日誌,能夠有時間策略和大小策略等
ThresholdFilter :過濾器,若是你要選擇控制檯只能輸出ERROR以上的類別,你就用ThresholdFilter,把level設置成ERROR,onMatch="ACCEPT" onMismatch="DENY" 的意思是匹配就接受,不然直接拒絕

web項目 (${sys:catalina.home} 是tomcat下的根目錄)tomcat

<?xml version="1.0" encoding="UTF-8"?>  
<Configuration>  
    <Appenders>  
    <!-- 輸出到控制檯 -->  
        <Console name="CONSOLE" target="SYSTEM_OUT">  
            <!-- 輸出格式 -->  
            <PatternLayout pattern="ROOT:%d %-5p %C %L - %m%n" />  
        </Console>  
        <!-- 按天備份一個日誌 -->  
        <!-- fileName爲生成的文件名,x爲路徑,也能夠採用相對路徑模式,filePattern爲時間到達後產生新日誌,舊日誌的文件名 -->  
        <RollingFile name="TASK" fileName="x:/xxxx/logs.log"  
            filePattern="x:/xxxx/logs_%d{yyyy-MM-dd}.log" >   
            <!-- 輸出格式 -->  
            <PatternLayout pattern="%d %-5p %m%n" />  
            <Policies>  
            <!-- 每1天更新一次,此處查閱網上和官方示例中,都是以小時出現,我測試是以天爲單位。(官方文檔中說明按item類型是不是小時,但沒找到在哪裏設置item類型)另有其餘各種型策略,請參閱官方文檔 --> 
<!-- TimeBasedTriggeringPolicy須要和filePattern配套使用,因爲filePattern配置的時間最小粒度是dd天,因此表示每一天新建一個文件保存日誌。SizeBasedTriggeringPolicy表示當文件大小大於指定size時,生成新的文件保存日誌。 --> 
                <TimeBasedTriggeringPolicy modulate="true"  
                    interval="1" />  
                <!-- 此處爲每一個文件大小策略限制,使用它通常會在文件中filePattern採用%i模式 -->  
                <!-- <SizeBasedTriggeringPolicy size="128KB" /> -->  
            </Policies>  
            <!-- 最多備份30天之內的日誌,此處爲策略限制,Delete中能夠按本身須要用正則表達式編寫 -->  
        <!-- DefaultRolloverStrategy字段中加入max=「30」經測試是配合SizeBasedTriggeringPolicy限制%i的存在數量,並無發現是網上流傳的是最多保存多少個文件的限制,也或許是我寫的有問題 -->  
         <DefaultRolloverStrategy>  
        <Delete basePath="x:/xxxx" maxDepth="1">  
                     <IfFileName glob="logs_*.log" />  
                     <IfLastModified age="30d" />  
            </Delete>  
            </DefaultRolloverStrategy>  
        </RollingFile>  
    </Appenders>  
    <!-- 連接到Console和RollingFile標籤實現debug以上等級的輸出 -->  
    <loggers>    
    <root level="debug">    
        <appender-ref ref="CONSOLE"/>    
        <AppenderRef ref="TASK" />  
    </root>    
    </loggers>    
</Configuration>  
相關文章
相關標籤/搜索