在應用程序中使用log4j

http://www.blogjava.net/qiyadeng/articles/13819.htm

1、在應用程序中使用log4j
2、把log4j-*.*jar放入CLASSPATH變量中
編輯如下簡單java文件:

 1package logging;
 2import org.apache.log4j.Logger;
 3import org.apache.log4j.PropertyConfigurator;
 4
 5public class TestLog4j {
 6
 7 static Logger logger = Logger.getLogger(TestLog4j.class);
 8 
 9 public static void main(String args[]){
10  PropertyConfigurator.configure("log4j.properties");
11  logger.info("Hello World");
12  logger.error("Hello World");
13  logger.warn("Hello World");
14  logger.debug("Hello World");
15 }

16}

17
18


新建一個配置文件log4j.properties:

log4j.rootLogger=WARN, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
#log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
# Print the date in ISO 8601 format
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN

編譯並運行TestLog4j會在目錄下生成一個example.log的文件,屏幕也會輸出信息,這證明已經你已經成功了第一步。
下面解釋下這些配置文件

log4j.rootLogger = [ level ], appendName1, appendName2, …appendNameN。同一個記錄器可有多個輸出端。
PS:level的級別(此級別可以自定義,系統默認提供了以下級別)
debug//調試信息
info//一般信息
warn//警告信息
error//錯誤信息
fatal//致命錯誤信息
上面列出的就是所謂log4j的輸出級別,log4j建議只使用4個級別,它們從上到下分別爲ERROR、WARN、INFO、DEBUG,假設你定義的級別是info,那麼error和warn的日誌可以顯示而比他低的debug信息就不顯示了。 
log4j.appender.appenderName = fully.qualified.name.of.appender.class。log4j提供了以下幾種常用的輸出目的地:
org.apache.log4j.ConsoleAppender,將日誌信息輸出到控制檯
org.apache.log4j.FileAppender,將日誌信息輸出到一個文件
org.apache.log4j.DailyRollingFileAppender,將日誌信息輸出到一個,並且每天輸出到一個新的日誌文件
org.apache.log4j.RollingFileAppender,將日誌信息輸出到一個文件,通過指定文件的的尺寸,當文件大小到達指定尺寸的時候會自動把文件改名,如名爲example.log的文件會改名爲 example.log.1,同時產生一個新的example.log文件。如果新的文件再次達到指定尺寸,又會自動把文件改名爲 example.log.2,同時產生一個example.log文件。依此類推,直到example.log. MaxBackupIndex, MaxBackupIndex的值可在配置文件中定義。
org.apache.log4j.WriterAppender,將日誌信息以流格式發送到任意指定的地方。
org.apache.log4j.jdbc.JDBCAppender,通過JDBC把日誌信息輸出到數據庫中。

Log4j提供了一下幾種佈局:
org.apache.log4j.HTMLLayout,以HTML表格形式佈局
org.apache.log4j.PatternLayout,可以靈活地指定佈局模式
org.apache.log4j.SimpleLayout,包含日誌信息的級別和信息字符串

定義一個PatternLayout佈局的語句爲:
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1} - %m%n
PS:ConversionPattern參數的格式含義
格式名 含義
%c 輸出日誌信息所屬的類的全名
%d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也可以在其後指定格式,比如:%d{yyy-MM-dd HH:mm:ss },輸出類似:2002-10-18- 22:10:28
%f 輸出日誌信息所屬的類的類名
%l 輸出日誌事件的發生位置,即輸出日誌信息的語句處於它所在的類的第幾行
%m 輸出代碼中指定的信息,如log(message)中的message
%n 輸出一個回車換行符,Windows平臺爲“\r\n”,Unix平臺爲“\n”
%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL。如果是調用debug()輸出的,則爲DEBUG,依此類推
%r 輸出自應用啓動到輸出該日誌信息所耗費的毫秒數
%t 輸出產生該日誌事件的線程名

另外很好的學習筆記:
http://www.sentom.net/list.asp?id=59
http://www.sentom.net/list.asp?id=60
http://www.sentom.net/list.asp?id=61


還有一篇文章比較好:

http://www.iteye.com/topic/378077

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