<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//LOGGER"
"http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- 輸出日誌到控制檯 ConsoleAppender -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %m%n" /> <!--[%d{HH:mm:ss,SSS}|%C.%M(%L)]|%m%n" -->
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO"/>
<param name="LevelMax" value="INFO"/>
</filter>
<!--
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="INFO" />
</filter>
-->
<filter class="org.apache.log4j.varia.StringMatchFilter">
<param name="StringToMatch" value="Configkeeper" />
<param name="AcceptOnMatch" value="false" />
</filter>
</appender>
<root>
<level value="INFO"/>
<appender-ref ref="console" />
</root>
</log4j:configuration>java
%M:輸出方法名 apache
%p: 輸出日誌信息優先級,即DEBUG,INFO,WARN,ERROR,FATAL, api
%d: 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也能夠在其後指定格式,好比:%d{yyyy-MM-dd HH:mm:ss,SSS},輸出相似:2011-10-18 22:10:28,921
%r: 輸出自應用啓動到輸出該log信息耗費的毫秒數
%c: 輸出日誌信息所屬的類目,一般就是所在類的全名
%t: 輸出產生該日誌事件的線程名
%l: 輸出日誌事件的發生位置,至關於%C.%M(%F:%L)的組合,包括類目名、發生的線程,以及在代碼中的行數。
%x: 輸出和當前線程相關聯的NDC(嵌套診斷環境),尤爲用到像java servlets這樣的多客戶多線程的應用中。
%%: 輸出一個"%"字符
%F: 輸出日誌消息產生時所在的文件名稱
%L: 輸出代碼中的行號
%m: 輸出代碼中指定的消息,產生的日誌具體信息
%n: 輸出一個回車換行符,Windows平臺爲"\r\n",Unix平臺爲"\n"輸出日誌信息換行 多線程
當某個logger的logging request(即printing method(error(),info()..))的級別高於或者等於該logger的級別(即在log4j.properties或者log4j.xml中定義)的時候,該logging request就爲enable.
一旦該logger的logging request爲enable,那麼該logging request將總會打印到該logger全部的appender中包括它的全部父logger的appender。(而不會管父logger的級別如何)。除非該logger的父logger的additivity設置爲false,默認的狀況下爲true。
某個logger的additivity設置爲false,表示log只打印到本log的appender中,而再也不打印到其父logger的appender。app