Log4j2的經常使用配置

定義日誌測試類:java

import org.apache.logging.log4j.LogManager;apache

import org.apache.logging.log4j.Logger;app

logger.trace("我是trace信息");ide

logger.debug("我是debug信息");
測試

logger.info("我是info信息");
logger.warn("我是warn信息");
logger.error("我是error信息");
spa

logger.fatal("我是fatal信息");  debug

一、log4j規定了默認的幾個級別:trace<debug<info<warn<error<fatal。級別之間是包含的關係,若是設置的是trace,則大於等於這個級別的日誌都會輸出。日誌

二、Log4j有一個默認的配置,它的日誌級別是ERROR,只輸出到控制檯。orm

三、root沒有name屬性,root至關於根節點,全部的logger都繼承了root的log配置,若是沒有指定logger的級別,只能打印root級別以上的日誌。繼承

即便你在不少類裏面經過類名.class.getName() 獲得不少的logger,並且沒有在配置文件的loggers下面作配置,他們也都可以輸出,由於他們都繼承了root的log配置。

以下設置,root的級別爲error,

<root level="error" includeLocation="true">

      <appender-ref ref="Console"/>

</root>  

<!-- 定義控制檯輸出 -->  Console這些節點不能隨便命名的。

 <Console name="Console" target="SYSTEM_OUT" follow="true">  

     <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />  

 </Console>  

輸出結果:

2016-12-22 15:17:28.978 ERROR [main][Log4j2Test.java:15] - 我是error信息

2016-12-22 15:17:28.979 FATAL [main][Log4j2Test.java:16] - 我是fatal信息 

若是修改控制檯輸出,加入以下:

<!--控制檯只輸出level及以上級別的信息(onMatch),其餘的直接拒絕(onMismatch)-->

<ThresholdFilter level="fatal" onMatch="ACCEPT" onMismatch="DENY"/>  

則Console只輸出fatal級別以上的日誌

2016-12-22 15:19:05.945 FATAL [main][Log4j2Test.java:16] - 我是fatal信息  

設置指定類的日誌輸出,若是設置級別爲info,即便root的級別爲error,指定類的info級別以上的扔能輸出,至關於重寫了root。

 <!--additivity開啓的話,若是這個logger也是知足root的,因此會被打印兩遍。-->

   <logger name="test.Log4j2Test" level="info" additivity="false">

      <appender-ref ref="ERROR-APPENDER"/>

   </logger> 

test.Log4j2Test的全部info級別以上的日誌會輸出到ERROR-APPENDER文件裏,若是ERROR-APPENDER有設置

<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>  

test.Log4j2Test只有知足error以上級別的纔會輸出到文件,要大於logger自己定義的info級別。

最終輸出root->logger->appender的級別限制。

若是test.Log4j2Test配置兩個AppenderReF,那麼兩個都會記錄知足level="debug"級別的日誌,這樣會形成多處記錄日誌,應該開啓匹配過濾。

<logger name="test.Log4j2Test" level="debug" additivity="false">

            <AppenderReF ref="DEBUG-APPENDER"/>

            <AppenderReF ref="ERROR-APPENDER"/>

</logger>  

發郵件功能,只有error級別以上的才能發郵件,須要引入mail的jar包。

<SMTP name="Mail" subject="Error Log" to="to@qq.com" from="from@sina.cn" replyTo="from@sina.cn"

          smtpProtocol="smtp" smtpHost="smtp.sina.cn" smtpPort="25" bufferSize="50" smtpDebug="false"

          smtpPassword="***" smtpUsername="from@sina.cn">

</SMTP> 

相關文章
相關標籤/搜索