1. 程式人生 > >log4j.properties 配置詳解

log4j.properties 配置詳解

一、基礎知識

1.    log4j.properties 基本配置格式如下

// --------------------------------------- log4j.properties 配置開始 ---------------------------------------


// 	配置rootLogger
log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  …

//	對配置根Logger的說明(1):
// 		類別 level 為 OFF、FATAL、ERROR、WARN、INFO、DEBUG、log、ALL或自定義的優先順序
// 		Log4j常用的優先順序:FATAL > ERROR > WARN > INFO > DEBUG 
// 		ERROR 為嚴重錯誤 主要是程式的錯誤
// 		WARN 為一般警告,比如session丟失
// 		INFO 為一般要顯示的資訊,比如登入登出
// 		DEBUG 為程式的除錯資訊
//	對配置根Logger的說明(2):
// 		appenderName1,appenderName2...為配置每一個日誌資訊輸出目的地的命名,可自行命名,同時可以指定多個輸出目的地


// < ------------------------- appenderName1 日誌輸出方式配置開始 ------------------------- >
// 	定義appenderName1的輸出方式(appenderName指當前的日誌資訊輸出目的地,當前為appenderName1)
// 	語法:log4j.appender.appenderName  =  fully.qualified.name.of.appender.class(日誌輸出目的地)
log4j.appender.appenderName1  =  fully.qualified.name.of.appender.class

// 	定義appenderName1當前輸出方式的引數 引數:option1...optionN
log4j.appender.appenderName1.option1  =  value1 
  … 
log4j.appender.appenderName1.optionN  =  valueN

// 	定義appenderName1的輸出佈局(appenderName指當前的日誌資訊輸出目的地,當前為appenderName1)
// 	語法:log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class(日誌輸出佈局)
log4j.appender.appenderName1.layout = fully.qualified.name.of.layout.class

//	定義appenderName1當前輸出佈局的輸出格式(appenderName指當前的日誌資訊輸出目的地,當前為appenderName1)
//	語法:log4j.appender.appenderName.layout.ConversionPattern=(日誌輸出格式)
log4j.appender.appenderName1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
// < ------------------------- appenderName1 日誌輸出方式配置結束 ------------------------- >


// < ------------------------- appenderName2 日誌輸出方式配置開始 ------------------------- >
// 	定義appenderName2的輸出方式(appenderName指當前的日誌資訊輸出目的地,當前為appenderName2)
// 	語法:log4j.appender.appenderName  =  fully.qualified.name.of.appender.class(日誌輸出目的地)
log4j.appender.appenderName2  =  fully.qualified.name.of.appender.class

// 	定義appenderName1當前輸出方式的引數 引數:option1...optionN
log4j.appender.appenderName2.option1  =  value1 
  … 
log4j.appender.appenderName2.optionN  =  valueN

// 	定義appenderName2的輸出佈局(appenderName指當前的日誌資訊輸出目的地,當前為appenderName2)
// 	語法:log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class(日誌輸出佈局)
log4j.appender.appenderName1.layout = fully.qualified.name.of.layout.class

//	定義appenderName2當前輸出佈局的輸出格式(appenderName指當前的日誌資訊輸出目的地,當前為appenderName2)
//	語法:log4j.appender.appenderName.layout.ConversionPattern=(日誌輸出格式)
log4j.appender.appenderName1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n 
// < ------------------------- appenderName2 日誌輸出方式配置結束 ------------------------- >


// ... 其它日誌資訊輸出目的地 ...


// --------------------------------------- log4j.properties 配置結束 ---------------------------------------
舉個栗子:
// 指定日誌輸出的級別為debug,級別大於debug的全部輸出
// 指定輸出目的地stdout和file
log4j.rootLogger=debug, stdout, file

// 指定輸出目的地stdout為輸出到控制檯
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
// 指定stdout的日誌訊息的輸出最低層次
log4j.appender.stdout.Threshold=ERROR
// 指定stdoutr輸出控制檯,預設情況下是:System.out
log4j.appender.stdout.Target=System.err 
// 指定stdoutr的佈局
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
// 指定stdoutr的佈局的輸出格式
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n  

// 指定輸出目的地file為輸出到檔案
log4j.appender.file=org.apache.log4j.FileAppender  
// 指定file的輸出日誌路徑
log4j.appender.file.File=${catalina.home}/logs_user/ZtreeDemoSSM.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout  
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n  

//	${catalina.home} tomcat伺服器的路徑  ======>  D:\98.2_Eclipse\20_tomcat\apache-tomcat-7.0.77
//	${catalina.home}/logs_user/ZtreeDemoSSM.log 相當於 D:\98.2_Eclipse\20_tomcat\apache-tomcat-7.0.77/logs_user/ZtreeDemoSSM.log

2    日誌資訊輸出目的地(appenderName日誌輸出目的地的命名)

// 	語法:log4j.appender.appenderName = fully.qualified.name.of.appender.class

// 		有以下日誌輸出目的地
//		1)org.apache.log4j.ConsoleAppender(控制檯)
//		2)org.apache.log4j.FileAppender(檔案)
//		3)org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌檔案)
//		4)org.apache.log4j.RollingFileAppender(檔案大小到達指定尺寸的時候產生一個新的檔案)
//		5)org.apache.log4j.WriterAppender(將日誌資訊以流格式傳送到任意指定的地方)		
//		6)org.apache.log4j.net.SMTPAppender(郵件)
//		7)org.apache.log4j.jdbc.JDBCAppender(資料庫)
//		8)其他如:GUI元件、甚至是套介面伺服器、NT的事件記錄器、UNIX Syslog守護程序等 

//	把 fully.qualified.name.of.appender.class 替換成從以上8種中選取的一種輸出目的地	

3    日誌資訊輸出佈局(appenderName日誌輸出目的地的命名)
// 	語法:log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class

//		有以下四種輸出佈局
//		1)org.apache.log4j.HTMLLayout(以HTML表格形式佈局),
//		2)org.apache.log4j.PatternLayout(可以靈活地指定佈局模式),
//		3)org.apache.log4j.SimpleLayout(包含日誌資訊的級別和資訊字串),
//		4)org.apache.log4j.TTCCLayout(包含日誌產生的時間、執行緒、類別等等資訊)

//	把 fully.qualified.name.of.layout.class 替換成從以上4種中選取的一種輸出佈局即可

4    日誌資訊PatternLayout佈局的輸出格式
//	日誌資訊格式中幾個符號所代表的含義:
//		-X號: X資訊輸出時左對齊;
//		%p: 輸出日誌資訊優先順序,即DEBUG,INFO,WARN,ERROR,FATAL,
//		%d: 輸出日誌時間點的日期或時間,預設格式為ISO8601,也可以在其後指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
//		%r: 輸出自應用啟動到輸出該log資訊耗費的毫秒數
//		%c: 輸出日誌資訊所屬的類目,通常就是所在類的全名
//		%t: 輸出產生該日誌事件的執行緒名
//		%l: 輸出日誌事件的發生位置,相當於%C.%M(%F:%L)的組合,包括類目名、發生的執行緒,以及在程式碼中的行數。舉例:Testlog4.main (TestLog4.java:10)
//		%x: 輸出和當前執行緒相關聯的NDC(巢狀診斷環境),尤其用到像java servlets這樣的多客戶多執行緒的應用中。
//		%%: 輸出一個"%"字元
//		%F: 輸出日誌訊息產生時所在的檔名稱
//		%L: 輸出程式碼中的行號
//		%m: 輸出程式碼中指定的訊息,產生的日誌具體資訊
//		%n: 輸出一個回車換行符,Windows平臺為"/r/n",Unix平臺為"/n"輸出日誌資訊換行

//		可以在%與模式字元之間加上修飾符來控制其最小寬度、最大寬度、和文字的對齊方式。如:
//		1)%20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,預設的情況下右對齊。
//		2)%-20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,"-"號指定左對齊。
//		3)%.30c:指定輸出category的名稱,最大的寬度是30,如果category的名稱大於30的話,就會將左邊多出的字元截掉,但小於30的話也不會有空格。
//		4)%20.30c:如果category的名稱小於20就補空格,並且右對齊,如果其名稱長於30字元,就從左邊較遠輸出的字元截掉。
//		舉個栗子
log4j.appender.Errorlog.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n 
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

5    日誌輸出目的地各種引數
輸出到控制檯
	log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender(指定輸出到控制檯)
	log4j.appender.Threshold=DEBUG(指定輸出類別)
	log4j.appender.CONSOLE.Target=System.out
	log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout(指定輸出佈局)
	log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(指定輸出格式)
輸出到檔案
	log4j.appender.FILE=org.apache.log4j.FileAppender(指定輸出到檔案)
	log4j.appender.FILE.File=file.log(指定輸出的路徑及檔名)
    log4j.appender.FILE.Append=false
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout(指定輸出的佈局)
    log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(指定輸出的格式)
輸出到檔案(輪換"日誌檔案",當日志文件達到指定大小時,該檔案就被關閉並備份,然後建立一個新的日誌檔案)
    log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender(指定輸出到檔案)
	log4j.appender.ROLLING_FILE.Threshold=ERROR(指定輸出類別)
 	log4j.appender.ROLLING_FILE.File=rolling.log(指定輸出的路徑及檔名)
 	log4j.appender.ROLLING_FILE.Append=true
 	log4j.appender.ROLLING_FILE.MaxFileSize=10KB(指定輸出到檔案的大小)
 	log4j.appender.ROLLING_FILE.MaxBackupIndex=1
 	log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout(指定採用輸出佈局)
 	log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(指定採用輸出格式)
輸出到Socket
 	log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender(指定輸出到Socket)
 	log4j.appender.SOCKET.RemoteHost=localhost(遠端主機)
 	log4j.appender.SOCKET.Port=5001(遠端主機埠)
	log4j.appender.SOCKET.LocationInfo=true
 	log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout(佈局)
 	log4j.appender.SOCET.layout.ConversionPattern =[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n %m[MESSAGE]%n%n(輸出格式)
輸出到郵件
	log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender(指定輸出到郵件)
	log4j.appender.MAIL.Threshold=FATAL
 	log4j.appender.MAIL.BufferSize=10
 	[email protected](發件人)
 	log4j.appender.MAIL.SMTPHost=mail.hollycrm.com(SMTP伺服器)
 	log4j.appender.MAIL.Subject=Log4J Message
 	[email protected](收件人)
 	log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout(佈局)
 	log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(格式)
輸出到資料庫
 	log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender(指定輸出到資料庫)
 	log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test(指定資料庫URL)
 	log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver(指定資料庫driver)
 	log4j.appender.DATABASE.user=root(指定資料庫使用者)
 	log4j.appender.DATABASE.password=root(指定資料庫使用者密碼)
 	log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')(組織SQL語句)
 	log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout(佈局)
 	log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(格式) 

6    普通logger概念

      舉個栗子:xxx.properties配置如下

// -------------------------------------	
log4j.rootLogger=INFO, console, file
 
log4j.appender.console=net.czt.log.AsyncConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%t] %-5p crazyant-web %-17c{2} (%13F:%L) %X{USER_ID}|%X{USER_IP}|%X{SERVER_ADDRESS}|%X{SERVER_NAME}|%X{REQUEST_URI}|%X{SESSION_ID} - %m%n
log4j.appender.console.bufferSize=10000
log4j.appender.console.encoding=UTF-8
 
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.file=/home/work/apache-tomcat-6.0.39/logs/crazyant.log
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.MaxFileSize=1GB
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%-5p] crazyant-web %d{yyyy-MM-dd HH:mm:ss,SSS} %X{USER_ID}|%X{USER_IP}|%X{SERVER_ADDRESS}|%X{SERVER_NAME}|%X{REQUEST_URI}|%X{SESSION_ID} method:%l%n%m%n
log4j.appender.file.bufferSize=10000
log4j.appender.file.encoding=UTF-8
 
log4j.logger.net.czt.crazyant.msg=DEBUG, message
log4j.additivity.net.czt.crazyant.msg=false
log4j.appender.message=org.apache.log4j.RollingFileAppender
log4j.appender.message.File=/home/work/apache-tomcat-6.0.39/logs/crazyant_message.log
log4j.appender.message.Append=true
log4j.appender.message.MaxFileSize=1GB
log4j.appender.message.MaxBackupIndex=5
log4j.appender.message.layout=org.apache.log4j.PatternLayout
log4j.appender.message.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] [%t] - %m%n
log4j.appender.message.encoding=UTF-8
 
log4j.logger.net.czt.crazyant.async.service=DEBUG, async
log4j.additivity.net.czt.crazyant.async.service=false
log4j.appender.async=org.apache.log4j.RollingFileAppender
log4j.appender.async.File=/home/work/apache-tomcat-6.0.39/logs/crazyant_async.log
log4j.appender.async.Append=true
log4j.appender.async.MaxFileSize=1GB
log4j.appender.async.MaxBackupIndex=5
log4j.appender.async.layout=org.apache.log4j.PatternLayout
log4j.appender.async.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] [%t] - %m%n
log4j.appender.async.encoding=UTF-8
 
log4j.logger.net.czt.orm.mybatis.SqlMonitorManager=DEBUG, showsql
log4j.additivity.net.czt.orm.mybatis.SqlMonitorManager=false
log4j.logger.net.czt.transaction.interceptor.SmartTransactionInterceptor=DEBUG, showsql
log4j.additivity.net.czt.transaction.interceptor.SmartTransactionInterceptor=false
log4j.appender.showsql=org.apache.log4j.RollingFileAppender
log4j.appender.showsql.File=/home/work/apache-tomcat-6.0.39/logs/crazyant_sql.log
log4j.appender.showsql.Append=true
log4j.appender.showsql.MaxFileSize=1GB
log4j.appender.showsql.MaxBackupIndex=5
log4j.appender.showsql.layout=org.apache.log4j.PatternLayout
log4j.appender.showsql.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] [%t] - %m%n
log4j.appender.showsql.encoding=UTF-8
 
log4j.logger.net.czt.crazyant.service=DEBUG, service
log4j.additivity.net.czt.crazyant.service=false
log4j.appender.service=org.apache.log4j.RollingFileAppender
log4j.appender.service.File=/home/work/apache-tomcat-6.0.39/logs/crazyant_service.log
log4j.appender.service.Append=true
log4j.appender.service.MaxFileSize=1GB
log4j.appender.service.MaxBackupIndex=5
log4j.appender.service.layout=org.apache.log4j.PatternLayout
log4j.appender.service.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] [%t] - %m%n
log4j.appender.service.encoding=UTF-8
 
// -------------------------------------
    在配置檔案的下方,可以方便的看到,將message(訊息)、async(後端執行緒)、showsql(資料庫日誌)、service(介面呼叫)
    分別輸出到了不同的日誌檔案。
    
    預設情況下我們只需要一個rootLogger,就是所有的日誌只會輸出到這一個日誌檔案中。
    如栗子中的log4j.rootLogger=INFO, console, file
    日誌檔案輸出級別為INFO,有兩個輸出目的地:分別是console和file。
    
    普通logger可以在rootLogger基礎上再定義一些規則。
    語法:log4j.logger.包名=[ level ], appenderName1, appenderName2...

    如下片段
    
    log4j.logger.com.zeng.ssm.service=DEBUG, service_log, outputfile
    log4j.additivity.com.zeng.ssm.service=false
    log4j.appender.service_log=org.apache.log4j.RollingFileAppender
    log4j.appender.service_log.File=/home/work/apache-tomcat-6.0.39/logs/crazyant_service_log.log
    log4j.appender.service_log.Append=true
    log4j.appender.service_log.MaxFileSize=1GB
    log4j.appender.service_log.MaxBackupIndex=5
    log4j.appender.service_log.layout=org.apache.log4j.PatternLayout
    log4j.appender.service_log.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] [%t] - %m%n
    log4j.appender.service_log.encoding=UTF-8
    
    log4j.appender.outputfile=輸出目的地
    ...

    1)log4j.logger.com.zeng.ssm.service=DEBUG, service_log, outputfile
    定義了當包com.zeng.ssm.service中出現了大於DEBUG的日誌資訊時,輸出日誌到service_log,outputfile指定的配置中
    
    2)log4j.additivity.com.zeng.ssm.service=false
    flase表示該包com.zeng.ssm.service發生的大於DEBUG的日誌資訊,不輸出到rootLogger指定的日誌中,
    僅輸出到該包指定的service_log和outputfile中
    
    3)其它配置的設定方法和rootLogger的配置相同(如設定輸出目的地, 輸出佈局, 輸出佈局格式)


二、檔案配置案例

1    檔案配置Sample1

	log4j.rootLogger=DEBUG,A1,R
	
	#log4j.rootLogger=INFO,A1,R
	# ConsoleAppender 輸出
	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,SSS} [%c]-[%p] %m%n
	
	# File 輸出 一天一個檔案,輸出路徑可以定製,一般在根路徑下
	log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
	log4j.appender.R.File=blog_log.txt
	log4j.appender.R.MaxFileSize=500KB
	log4j.appender.R.MaxBackupIndex=10
	log4j.appender.R.layout=org.apache.log4j.PatternLayout 
	log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n

2    檔案配置Sample2
//	下面給出的Log4J配置檔案實現了輸出到控制檯,檔案,回滾檔案,傳送日誌郵件,輸出到資料庫日誌表,自定義標籤等全套功能。

	log4j.rootLogger=DEBUG,CONSOLE,A1,im 
	#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE
	log4j.addivity.org.apache=true

//	Console Appender 
	log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
	log4j.appender.Threshold=DEBUG 
	log4j.appender.CONSOLE.Target=System.out 
	log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
	log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n 
	#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n

//	File Appender 
	log4j.appender.FILE=org.apache.log4j.FileAppender 
	log4j.appender.FILE.File=file.log 
	log4j.appender.FILE.Append=false 
	log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 
	log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n 
	# Use this layout for LogFactor 5 analysis

//	Rolling File 
	log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender 
	log4j.appender.ROLLING_FILE.Threshold=ERROR 
	log4j.appender.ROLLING_FILE.File=rolling.log 
	log4j.appender.ROLLING_FILE.Append=true 
	log4j.appender.ROLLING_FILE.MaxFileSize=10KB 
	log4j.appender.ROLLING_FILE.MaxBackupIndex=1 
	log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout 
	log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

//	Socket Appender 
	log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender 
	log4j.appender.SOCKET.RemoteHost=localhost 
	log4j.appender.SOCKET.Port=5001 
	log4j.appender.SOCKET.LocationInfo=true 
	# Set up for Log Facter 5 
	log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout 
	log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n

//	Log Factor 5 Appender 
	log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender 
	log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
	
//	SMTP Appender 
	log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender 
	log4j.appender.MAIL.Threshold=FATAL 
	log4j.appender.MAIL.BufferSize=10 
	[email protected]
	log4j.appender.MAIL.SMTPHost=mail.hollycrm.com 
	log4j.appender.MAIL.Subject=Log4J Message 
	[email protected]
	log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout 
	log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

//	JDBC Appender 
	log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender 
	log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test 
	log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver 
	log4j.appender.DATABASE.user=root 
	log4j.appender.DATABASE.password= 
	log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n') 
	log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout 
	log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
	
//	A1 Appender	
	log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender 
	log4j.appender.A1.File=SampleMessages.log4j 
	log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j' 
	log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout
	
//	自定義Appender 
	log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
	log4j.appender.im.host = mail.cybercorlin.net 
	log4j.appender.im.username = username 
	log4j.appender.im.password = password 
	log4j.appender.im.recipient = [email protected]
	log4j.appender.im.layout=org.apache.log4j.PatternLayout 
	log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

三、高階使用

實驗目的:
    1.把FATAL級錯誤寫入2000NT日誌
    2.WARN,ERROR,FATAL級錯誤傳送email通知管理員
    3.其他級別的錯誤直接在後臺輸出
實驗步驟:
    1.輸出到2000NT日誌
        1)把Log4j壓縮包裡的NTEventLogAppender.dll拷到WINNT/SYSTEM32目錄下
        2)寫配置檔案log4j.properties
            # 在2000系統日誌輸出
            log4j.logger.NTlog=FATAL, A8
            # APPENDER A8
            log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender
            log4j.appender.A8.Source=JavaTest
            log4j.appender.A8.layout=org.apache.log4j.PatternLayout
            log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
        3)呼叫程式碼:
            Logger logger2 = Logger.getLogger("NTlog"); //要和配置檔案中設定的名字相同
            logger2.debug("debug!!!");
            logger2.info("info!!!");
            logger2.warn("warn!!!");
            logger2.error("error!!!");
    //只有這個錯誤才會寫入2000日誌
    logger2.fatal("fatal!!!");
    
    2.傳送email通知管理員:
        1)首先下載JavaMail和JAF,
            http://java.sun.com/j2ee/ja/javamail/index.html
            http://java.sun.com/beans/glasgow/jaf.html
            在專案中引用mail.jar和activation.jar。
        2)寫配置檔案
        # 將日誌傳送到email
            log4j.logger.MailLog=WARN,A5
            #  APPENDER A5
            log4j.appender.A5=org.apache.log4j.net.SMTPAppender
            log4j.appender.A5.BufferSize=5
            [email protected]
            [email protected]
            log4j.appender.A5.Subject=ErrorLog
            log4j.appender.A5.SMTPHost=smtp.263.net
            log4j.appender.A5.layout=org.apache.log4j.PatternLayout
            log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
        3)呼叫程式碼:
            //把日誌傳送到mail
            Logger logger3 = Logger.getLogger("MailLog");
            logger3.warn("warn!!!");
            logger3.error("error!!!");
            logger3.fatal("fatal!!!");

    3.在後臺輸出所有類別的錯誤:
        1)寫配置檔案
            # 在後臺輸出
            log4j.logger.console=DEBUG, A1
            # APPENDER A1
            log4j.appender.A1=org.apache.log4j.ConsoleAppender
            log4j.appender.A1.layout=org.apache.log4j.PatternLayout
            log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
        2)呼叫程式碼
            Logger logger1 = Logger.getLogger("console");
            logger1.debug("debug!!!");
            logger1.info("info!!!");
            logger1.warn("warn!!!");
            logger1.error("error!!!");
            logger1.fatal("fatal!!!");

-------------------------------------------------------------------
全部配置檔案:log4j.properties

	# 在後臺輸出
	log4j.logger.console=DEBUG, A1
	# APPENDER A1
	log4j.appender.A1=org.apache.log4j.ConsoleAppender
	log4j.appender.A1.layout=org.apache.log4j.PatternLayout
	log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
	
	# 在2000系統日誌輸出
	log4j.logger.NTlog=FATAL, A8
	# APPENDER A8
	log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender
	log4j.appender.A8.Source=JavaTest
	log4j.appender.A8.layout=org.apache.log4j.PatternLayout
	log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
	
	# 將日誌傳送到email
	log4j.logger.MailLog=WARN,A5
	#  APPENDER A5
	log4j.appender.A5=org.apache.log4j.net.SMTPAppender
	log4j.appender.A5.BufferSize=5
	[email protected]
	[email protected]
	log4j.appender.A5.Subject=ErrorLog
	log4j.appender.A5.SMTPHost=smtp.263.net
	log4j.appender.A5.layout=org.apache.log4j.PatternLayout
	log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

全部程式碼:Log4jTest.java
import org.apache.log4j.*; 
//import org.apache.log4j.nt.*; 
//import org.apache.log4j.net.*; 

public class Log4jTest{ 
	public static void main(String args[]){ 
		PropertyConfigurator.configure("log4j.properties"); 
		//在後臺輸出 
		Logger logger1 = Logger.getLogger("console"); 
		logger1.debug("debug!!!"); 
		logger1.info("info!!!"); 
   		logger1.warn("warn!!!"); 
   		logger1.error("error!!!"); 
   		logger1.fatal("fatal!!!");
		
		//在NT系統日誌輸出 
  		Logger logger2 = Logger.getLogger("NTlog"); 
   		
   		//NTEventLogAppender nla = new NTEventLogAppender(); 
   		logger2.debug("debug!!!"); 
   		logger2.info("info!!!"); 
   		logger2.warn("warn!!!"); 
   		logger2.error("error!!!"); 
   
   		//只有這個錯誤才會寫入2000日誌 
   		logger2.fatal("fatal!!!");
		
		//把日誌傳送到mail 
   		Logger logger3 = Logger.getLogger("MailLog"); 
   		//SMTPAppender sa = new SMTPAppender(); 
   		logger3.warn("warn!!!"); 
   		logger3.error("error!!!"); 
   		logger3.fatal("fatal!!!"); 
	} 
}

需要如下工具包:

commons-logging-1.1.3.jar
log4j-1.2.17.jar

也可追加如下兩個(版本必須一致):

slf4j-api-1.7.25.jar
slf4j-log4j12-1.7.25.jar

相關推薦

log4j.properties配置與實例

尺寸 bject debug deb .com 大數 配置日誌 應用程序 登錄 最近使用log4j寫log時候發現網上的寫的都是千篇一律,寫的好的嘛不全,寫的全一點的嘛沒有一點格式,看著累。這裏把網上收集到的整理了一下,並且全部都在機器上測試成功了。這麽好的文

log4j.properties配置與例項-全部測試通過[轉]

最近使用log4j寫log時候發現網上的寫的都是千篇一律,寫的好的嘛不全,寫的全一點的嘛沒有一點格式,看著累。這裡把網上收集到的整理了一下,並且全部都在機器上測試成功了。這麼好的文件估計沒有了吧?  ###############################################

commons-logging和Log4j 日誌管理/log4j.properties配置

commons-logging和Log4j 日誌管理 (zz) 什麼要用日誌(Log)? 這個……就不必說了吧。 為什麼不用System.out.println()? 功能太弱;不易於控制。如果暫時不想輸出了怎麼辦?如果想輸出到檔案怎麼辦?如果想部分輸出怎麼辦?…… 為什麼

log4j.properties配置

一、Log4j配置 第一步:加入log4j-1.2.8.jar到lib下。 第二步:在CLASSPATH下建立log4j.properties。內容如下: Java程式碼 收藏程式碼 log4j.rootCategory=INFO, stdout ,

spark log4j.properties配置與例項

################################################################################  #①配置根Logger,其語法為:  #  #log4j.rootLogger = [level],appen

log4j.properties配置與例項-全部測試通過

最近使用log4j寫log時候發現網上的寫的都是千篇一律,寫的好的嘛不全,寫的全一點的嘛沒有一點格式,看著累。這裡把網上收集到的整理了一下,並且全部都在機器上測試成功了。這麼好的文件估計沒有了吧? ######################################

log4j.properties 配置

一、基礎知識 1.    log4j.properties 基本配置格式如下 // --------------------------------------- log4j.properties 配置開始 ---------------------------------

log4j.xml配置 properties 的太費眼了

  Xml程式碼 <?xml version="1.0" encoding="UTF-8"?>     <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">             <log

log4jlog4j.properties引數log4j各個配置引數含義)

====>log4j之log4j.properties引數詳解 ====>log4j介紹: Log4j是Apache的一個開源專案,通過使用Log4j,我們可以控制日誌資訊輸送的目的地是控制檯、檔案、GUI元件,甚至是套介面伺服器、NT的事件

struts.properties配置

pro request location pri term i18n 臨時 def toolbox Struts 2框架有兩個核心配置文件,其中struts.xml文件主要負責管理應用中的Action映射,以及該Action包含的Result定義等。除此之 外,Struts

log4j配置(轉)

version let imp err pro 字符 bug rom 程序 轉自:http://blog.sina.com.cn/s/blog_5ed94d710101go3u.html 最近使用log4j寫log時候發現網上的寫的都是千篇一律,寫的好的嘛不

Log4J日誌配置

append tar 行號 中間 註意 -h 控制 復制代碼 #### 一、Log4j簡介Log4j有三個主要的組件:Loggers(記錄器),Appenders (輸出源)和Layouts(布局)。這裏可簡單理解為日誌類別,日誌要輸出的地方和日誌以何種形式輸出。綜合使用這

spring boot application properties配置

ini let encoding odi gap pool nodes gui erp # =================================================================== # COMMON SPRING BOOT

java日誌處理元件log4j--log4j.xml配置

<?xml version="1.0" encoding="GBK" ?>     <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">     <log4j:configuration xmlns:log4j="http:/

og4j.properties配置

log4j.properties 使用 一.引數意義說明 輸出級別的種類 ERROR、WARN、INFO、DEBUG ERROR 為嚴重錯誤 主要是程式的錯誤 WARN 為一般警告,比如session丟失 INFO 為一般要顯示的資訊,比如登入登出 DEBUG 為程式的除錯資訊 配置日誌資訊輸出目的地 log

Log4J日誌配置和自定義log4j日誌級別及輸出日誌到不同檔案實現方法

package com.jo.work.log4j; import java.util.Enumeration; import org.apache.log4j.Appender; import org.apache.log4j.FileAppender; import org.apache.log4j.

log4j.xml配置log4j日誌使用

log4j 有兩種配置方法,大家熟知的是properties檔案但是最近的專案實施中,每次去使用者那裡裝系統,都要苦惱於log檔案放在不同位置,要改property檔案就要重打jar包,麻煩的緊。而如果採用 xml配置的方法,直接放在WEB-INFO下,要修改路徑,很方便。查

apache Log4j日誌配置

附:Log4j比較全面的配置Log4j配置檔案實現了輸出到控制檯、檔案、回滾檔案、傳送日誌郵件、輸出到資料庫日誌表、自定義標籤等全套功能。log4j.rootLogger=DEBUG,console,dailyFile,imlog4j.additivity.org.apache=true# 控制檯(conso

Log4J.xml配置

Appender Appender:日誌輸出器,配置日誌的輸出級別、輸出位置等,包括以下幾類: ConsoleAppender: 日誌輸出到控制檯; FileAppender:輸出到檔案; RollingFileAppender:輸出到檔案,檔案達到一定閾

Log4j.xml配置(轉)

Xml程式碼<?xml version="1.0" encoding="UTF-8"?>     <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">             <log4j:confi