javaweb學習總結(六)log4j xml和properties兩種配置

1、Logger 完成日誌信息的處理

 定義輸出的層次和決定信息是否輸出

 DEBUG < INFO < WARN < ERROR


2、Appender 設置日誌信息的去向
常用的:
org.apache.log4j.ConsoleAppender(控制檯)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppener(每天產生一個日誌文件)
org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
org.apache.log4j.WriterAppender(將日誌訊息以串流格式發送到任意指定的地方)
org.apache.log4j.JdbcAppender(將日誌訊息保存到數據庫中)



3、Layout 設置日誌信息的輸出樣式
layout有以下幾種:
org.apache.log4j.HTMLLayout(以HTML表格形式佈局)
org.apache.log4j.SimpleLayout(包含日誌訊息的級別和訊息字符串)
org.apache.log4j.TTCCLayout(包含日誌產生的時間、執行緒、類別等訊息)
org.apache.log4j.PatterLayout(可以靈活地指定佈局格式)


4、配置文件 log4j.properties或log4j.xml


log4j.properties實例:

log4j.logger.com.jjm.util=INFO, A1,A2  
log4j.logger.com.jjm.dao=DEBUG, A1                     (com.jjm.util和com.jjm.dao是class全名匹配字符串)      
  
log4j.appender.A1=org.apache.log4j.ConsoleAppender  
log4j.appender.A1.layout=org.apache.log4j.PatternLayout  
log4j.appender.A1.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}][%C-%M]%m%n  
  
log4j.appender.A2=org.apache.log4j.RollingFileAppender  
log4j.appender.A2.File=sshdemo.log  
log4j.appender.A2.MaxFileSize=500KB  
log4j.appender.A2.MaxBackupIndex=1  
log4j.appender.A2.layout=org.apache.log4j.PatternLayout  
log4j.appender.A2.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}][%C-%M]%m%n  

log4j.xml實例:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<!-- Log4j 把日誌進行分級分開來打以後方便進行日誌排除錯誤 -->
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
	<!--  [屏幕Appender] =====-->
	<appender name="DEFAULT-CONSOLE" class="org.apache.log4j.ConsoleAppender">
		 
		<param name="encoding" value="utf-8" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH\:mm\:ss}][%p][%t]- %l %n :%m%n" />
		</layout>
	</appender> 

	<!-- [DEBUG Appender] -->
	<appender name="DEBUG-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="file"
			value="/home/admin/output/logs/javalog/welo-admin/debug.log" />
		<param name="append" value="true" />
		<param name="encoding" value="utf-8" />
		<param name="threshold" value="debug" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH\:mm\:ss}][%p][%t]- %l %n :%m%n" />
		</layout>
	</appender>
	<!-- [INFO Appender] -->
	<appender name="INFO-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="file"
			value="/home/admin/output/logs/javalog/welo-admin/info.log" />
		<param name="append" value="true" />
		<param name="encoding" value="utf-8" />
		<param name="threshold" value="info" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH\:mm\:ss}][%p][%t]- %l %n :%m%n" />
		</layout>
	</appender>	
	<!-- [WARN Appender] -->
	<appender name="WARN-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="file"
			value="/home/admin/output/logs/javalog/welo-admin/warn.log" />
		<param name="append" value="true" />
		<param name="encoding" value="utf-8" />
		<param name="threshold" value="warn" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH\:mm\:ss}][%p][%t]- %l %n :%m%n" />
		</layout>
	</appender>
	<!-- [ERROR Appender] -->
	<appender name="ERROR-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="file"
			value="/home/admin/output/logs/javalog/welo-admin/error.log" />
		<param name="append" value="true" />
		<param name="encoding" value="utf-8" />
		<param name="threshold" value="error" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH\:mm\:ss}][%p][%t]- %l %n :%m%n" />
		</layout>
	</appender>
	
	
	
	<!-- [公共Appender] 彙總性能 -->
	<appender name="MONITOR-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="file"
			value="/home/admin/output/logs/javalog/welo-admin/monitor.log" />
		<param name="append" value="true" />
		<param name="encoding" value="utf-8" />
		<param name="threshold" value="info" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH\:mm\:ss}][%p][%t]- %l %n :%m%n" />
		</layout>
	</appender>

<!-- 輸出sql 語句 by chb -->
	<appender name="IBatis" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="file"
			value="/home/admin/output/logs/javalog/welo-admin/IBatis.log" />
	  <layout class="org.apache.log4j.PatternLayout">
	   <param name="ConversionPattern"
	    value="%-4r [%t] %-5p %c %x - %m%n" />
	  </layout>
	  <filter class="org.apache.log4j.varia.LevelRangeFilter">
	   <param name="LevelMin" value="debug" />
	   <param name="LevelMax" value="error" />
	  </filter>
	</appender>
 
	 <logger name="com.ibatis" additivity="true">
	  <level value="info" />
	 </logger>
	 
	 <logger name="java.sql.Connection" additivity="true">
	  <level value="info" />
	 </logger>
	 
	 <logger name="java.sql.Statement" additivity="true">
	  <level value="info" />
	 </logger>
	 
	 <logger name="java.sql.PreparedStatement" additivity="true">
	  <level value="info" />
	  <appender-ref ref="IBatis" />
	 </logger>
	 
	 <logger name="java.sql.ResultSet" additivity="true">
	  <level value="info" />
	  <appender-ref ref="IBatis" />
	 </logger>
	<root>
		<level value="debug" />
 		
<!--   		 <appender-ref ref="DEFAULT-CONSOLE" />  -->
  		<appender-ref ref="IBatis" />
		<appender-ref ref="DEBUG-APPENDER" /> 
		<appender-ref ref="INFO-APPENDER" />
		<appender-ref ref="WARN-APPENDER" />
		 
		<appender-ref ref="ERROR-APPENDER" />
	</root>
</log4j:configuration>

格式說明layout中的參數都以%開始,後面不同的參數代表不同的格式化信息(參數按字母表順序列出):


%c        輸出所屬類的全名,可在修改爲 %d{Num} ,Num類名輸出的維(如:"org.apache.elathen.ClassName",%C{2}將輸出elathen.ClassName)


%d       輸出日誌時間其格式爲 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}


%l        輸出日誌事件發生位置,包括類目名、發生線程,在代碼中的行數


%n       換行符


%m      輸出代碼指定信息,如info(“message”),輸出message


%p       輸出優先級,即 FATAL ,ERROR 等


%r        輸出從啓動到顯示該log信息所耗費的毫秒數


%t        輸出產生該日誌事件的線程名


個人偏向於使用xml配置,因爲xml配置層次感更爲清晰。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章