1. 程式人生 > >Log4j.xml配置

Log4j.xml配置

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
	<!-- 
		根節點的配置順序:
			renderer
			appender
			plugin
			logger
			category
			root
			loggerfactory
			categoryfactory
	-->
	<!-- ========================================================================================= -->
	<!-- 
		org.apache.log4j.ConsoleAppender            控制檯輸出
		org.apache.log4j.FileAppender               檔案日誌輸出
		org.apache.log4j.DailyRollingFileAppender   每個時間段產生一個日誌檔案
		org.apache.log4j.RollingFileAppender        檔案大小到達指定尺寸的時候產生一個新的檔案
		org.apache.log4j.WriterAppender             將日誌資訊以流格式傳送到任意指定的地方
		org.apache.log4j.net.SMTPAppender           發郵件輸出日誌
		org.apache.log4j.net.SocketAppender         Socket日誌
		org.apache.log4j.nt.NTEventLogAppender      Window NT日誌
		org.apache.log4j.net.SyslogAppender
		org.apache.log4j.net.JMSAppender
		org.apache.log4j.AsyncAppender
		org.apache.log4j.varia.NullAppender
		org.apache.log4j.jdbc.JDBCAppender 
	-->
	<!-- ========================================================================================= -->
	<!-- 
		控制檯輸出:org.apache.log4j.ConsoleAppender
			Threshold=WARN      指定日誌訊息的輸出最低層次。 
			ImmediateFlush=true 預設值是 true,意謂著所有的訊息都會被立即輸出。 
			Target=System.err   預設情況下是:System.out,指定輸出控制檯  
	-->
	<appender name="Console" class="org.apache.log4j.ConsoleAppender">
		<param name="Threshold" value="ALL"></param>
		<param name="ImmediateFlush" value="true"></param>
		<param name="Target" value="System.out"></param>
		<layout class="org.apache.log4j.TTCCLayout" />
	</appender>
	<!-- ========================================================================================= -->
	<!-- 	
		檔案日誌輸出:org.apache.log4j.FileAppender
			Threshold=WARN      指定日誌訊息的輸出最低層次。 
			ImmediateFlush=true 預設值是 true,意謂著所有的訊息都會被立即輸出。 
			File=mylog.txt      指定訊息輸出到 mylog.txt 檔案。 
			Append=false        預設值是 true,即將訊息增加到指定檔案中,false 指將訊息覆蓋指定的檔案內容。 
	-->
	<appender name="File" class="org.apache.log4j.FileAppender">
		<param name="Threshold" value="ALL"></param>
		<param name="ImmediateFlush" value="true"></param>
		<param name="File" value="F:\\FileAppender.txt"></param>
		<param name="Append" value="false"></param>
		<layout class="org.apache.log4j.TTCCLayout" />
	</appender>
	<!-- ========================================================================================= -->
	<!-- 	
		每個時間段產生一個日誌檔案:org.apache.log4j.DailyRollingFileAppender
		Threshold=WARN          指定日誌訊息的輸出最低層次。 
		ImmediateFlush=true     預設值是 true,意謂著所有的訊息都會被立即輸出。 
		File=mylog.txt          指定訊息輸出到 mylog.txt 檔案。 
		Append=false            預設值是 true,即將訊息增加到指定檔案中,false 指將訊息覆蓋指定的檔案內容。 
		DatePattern=.yyyy-ww    每週滾動一次檔案,即每週產生一個新的檔案。
		當然也可以指定按月、周、天、時和分。即對應的格式如下: 
			.yyyy-MM            每月 
			.yyyy-ww            每週 
			.yyyy-MM-dd         每天 
			.yyyy-MM-dd-a       每天兩次 
			.yyyy-MM-dd-HH      每小時 
			.yyyy-MM-dd-HH-mm   每分鐘  
	-->
	<appender name="DailyRollingFile" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="Threshold" value="ALL"></param>
		<param name="ImmediateFlush" value="true"></param>
		<param name="File" value="F:\\DailyRollingFileAppender.txt"></param>
		<param name="Append" value="false"></param>
		<param name="DatePattern" value=".yyyy-MM-dd-HH-mm"></param>
		<layout class="org.apache.log4j.TTCCLayout" />
	</appender>
	<!-- ========================================================================================= -->
	<!-- 	
		檔案大小到達指定尺寸的時候產生一個新的檔案:org.apache.log4j.RollingFileAppender
		Threshold=WARN      指定日誌訊息的輸出最低層次。 
		ImmediateFlush=true 預設值是 true,意謂著所有的訊息都會被立即輸出。 
		File=mylog.txt      指定訊息輸出到 mylog.txt 檔案。 
		Append=false        預設值是 true,即將訊息增加到指定檔案中,false 指將訊息覆蓋指定的檔案內容。 
		MaxFileSize=100KB   字尾可以是 KB, MB  或者是  GB.  在日誌檔案到達該大小時,將會自動滾動,即將原來的內容移到 mylog.log.1 檔案。 
		MaxBackupIndex=2    指定可以產生的滾動檔案的最大數。 
	-->
	<appender name="RollingFile" class="org.apache.log4j.RollingFileAppender">
		<param name="Threshold" value="ALL"></param>
		<param name="ImmediateFlush" value="true"></param>
		<param name="File" value="F:\\RollingFileAppender.txt"></param>
		<param name="Append" value="false"></param>
		<param name="MaxFileSize" value="1KB"></param>
		<param name="MaxBackupIndex" value="3"></param>
		<layout class="org.apache.log4j.TTCCLayout" />
	</appender>
	<!-- ========================================================================================= -->
	<!-- ========================================================================================= -->
	<!-- 
		org.apache.log4j.HTMLLayout     以HTML表格形式佈局
		org.apache.log4j.PatternLayout  可以靈活地指定佈局模式
		org.apache.log4j.xml.XMLLayout  XML檔案佈局日誌
		org.apache.log4j.SimpleLayout   包含日誌資訊的級別和資訊字串
		org.apache.log4j.TTCCLayout     包含日誌產生的時間、執行緒、類別等等資訊 
	-->
	<!-- ========================================================================================= -->
	<!-- 	
		以HTML表格形式佈局:org.apache.log4j.HTMLLayout
			LocationInfo=true   預設值是false,輸出java檔名稱和行號
			Title=日誌資訊      預設值是"Log4J Log Messages" 
	-->
	<appender name="HTML" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.HTMLLayout">
			<param name="LocationInfo" value="true"></param>
			<param name="Title" value="日誌資訊"></param>
		</layout>
	</appender>
	<!-- ========================================================================================= -->
	<!-- 
		可以靈活地指定佈局模式:org.apache.log4j.PatternLayout
			ConversionPattern=%m%n	指定怎樣格式化指定的訊息,如:%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
		Log4J採用類似C語言中的printf函式的列印格式格式化日誌資訊,列印引數如下: 
			-X號	X資訊輸出時左對齊; 
			%p		輸出日誌資訊優先順序,即 DEBUG,INFO,WARN,ERROR,FATAL, 
			%d		輸出日誌時間點的日期或時間,預設格式為ISO8601,也可以在其後指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS} 
			%r		輸出自應用啟動到輸出該 log 資訊耗費的毫秒數 
			%c		輸出日誌資訊所屬的類目,配置檔案中的名字,通常就是所在類的全名(若使用 rootLogger)
			%t		輸出產生該日誌事件的執行緒名 
			%l		輸出日誌事件的發生位置,相當於%C.%M(%F:%L)的組合,包括類目名、發生的執行緒,以及行數。舉例:Testlog4.main(TestLog4.java:10) 
			%x		輸出和當前執行緒相關聯的 NDC(巢狀診斷環境),尤其用到像 java servlets 這樣的多客戶多執行緒的應用中。 
			%%		輸出一個"%"字元 
			%F		輸出日誌訊息產生時所在的檔名稱 
			%L		輸出程式碼中的行號 
			%m		輸出程式碼中指定的訊息,產生的日誌具體資訊 
			%n		輸出一個回車換行符,Windows 平臺為"\r\n",Unix 平臺為"\n"輸出日誌資訊換行
			%M		輸出日誌資訊所屬的方法
		可以在%與模式字元之間加上修飾符來控制其最小寬度、最大寬度、和文字的對齊方式。如: 
			%20c    指定輸出 category 的名稱,最小的寬度是 20,如果 category 的名稱小於 20 的話,預設的情況下右對齊。 
			%-20c	指定輸出 category 的名稱,最小的寬度是 20,如果 category 的名稱小於 20 的話,"-"號指定左對齊。 
			%.30c	指定輸出 category 的名稱,最大的寬度是 30,如果 category 的名稱大於 30 的話,就會將左邊多出的字元截掉,但小於 30 的話也不會有空格。 
			%20.30c	如果 category 的名稱小於 20 就補空格,並且右對齊,如果其名稱長於 30 字元,就從左邊交遠銷出的字元截掉 
	-->
	<appender name="Pattern" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="級別:[%-6p] 時間:[%d{yyy-MMM-dd HH:mm:ss,SSS}] %-50l %m%n"></param>
		</layout>
	</appender>
	<!-- ========================================================================================= -->
	<!-- 
		XML檔案佈局日誌:org.apache.log4j.xml.XMLLayout
			LocationInfo=true		預設值是 false,輸出 java 檔案和行號 
	-->
	<appender name="XML" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.xml.XMLLayout">
			<param name="LocationInfo" value="true"></param>
		</layout>
	</appender>
	<!-- ========================================================================================= -->
	<!-- ========================================================================================= -->
	<logger name="ConsoleLog" additivity="false">
		<level value="WARN" />
		<appender-ref ref="Console" />
	</logger>
	<logger name="FileLog" additivity="false">
		<level value="WARN" />
		<appender-ref ref="File" />
	</logger>
	<logger name="DailyRollingFileLog" additivity="false">
		<level value="WARN" />
		<appender-ref ref="DailyRollingFile" />
	</logger>
	<logger name="RollingFileLog" additivity="false">
		<level value="WARN" />
		<appender-ref ref="RollingFile" />
	</logger>
	<logger name="HTMLLog" additivity="false">
		<level value="WARN" />
		<appender-ref ref="HTML" />
	</logger>
	<logger name="PatternLog" additivity="false">
		<level value="WARN" />
		<appender-ref ref="Pattern" />
	</logger>
	<logger name="XMLLog" additivity="false">
		<level value="WARN" />
		<appender-ref ref="XML" />
	</logger>
	<!-- ========================================================================================= -->
	<!-- 
		優先順序:ALL < DEBUG < INFO <WARN < ERROR < FATAL < OFF 
	-->
	<root>
		<priority value="ALL" />
		<appender-ref ref="Console" />
	</root>
</log4j:configuration>