1、定義配置文件
其實您也可以完全不使用配置文件,而是在代碼中配置Log4j環境。但是,使用配置文件將使您的應用程序更加靈活。
Log4j支持兩種配置文件格式,一種是Java特性文件(鍵=值),一種是XML格式的文件。下面我們介紹使用Log4j配置文件的方法:
配置根Logger,其語法爲:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中,level 是日誌記錄的優先級,分爲OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。Log4j建議只使用四個級別,優先級從高到低分別是ERROR、WARN、INFO、DEBUG。通過在這裏定義的級別,您可以控制到應用程序中相應級別的日誌信息的開關。比如在這裏定義了INFO級別,則應用程序中所有DEBUG級別的日誌信息將不被打印出來。
appenderName就是指定日誌信息輸出到哪個地方。您可以同時指定多個輸出目的地。
配置日誌信息輸出目的地Appender,其語法爲
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.optionN = valueN
其中,Log4j提供的appender有以下幾種:
org.apache.log4j.ConsoleAppender(控制檯)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌文件)
org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)
配置日誌信息的格式(佈局),其語法爲:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.optionN = valueN
其中,Log4j提供的layout有以下幾種:
org.apache.log4j.HTMLLayout(以HTML表格形式佈局)
org.apache.log4j.PatternLayout(可以靈活地指定佈局模式)
org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串)
org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)
2、在代碼中使用Log4j
下面將講述在程序代碼中怎樣使用Log4j。
i、得到記錄器 使用Log4j,第一步就是獲取日誌記錄器,這個記錄器將負責控制日誌信息。其語法爲: public static Logger getLogger( String name),通過指定的名字獲得記錄器,如果必要的話,則爲這個名字創建一個新的記錄器。Name一般取本類的名字,比如: static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () ) ;
ii、讀取配置文件當獲得了日誌記錄器之後,第二步將配置Log4j環境,其語法爲: BasicConfigurator.configure ():自動快速地使用缺省Log4j環境。 PropertyConfigurator.configure ( String configFilename):讀取使用Java的特性文件編寫的配置文件。 DOMConfigurator.configure ( String filename ):讀取XML形式的配置文件。
iii、插入記錄信息(格式化日誌信息)當上兩個必要步驟執行完畢,您就可以輕鬆地使用不同優先級別的日誌記錄語句插入到您想記錄日誌的任何地方,其語法如下:
Logger.debug ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;
iv、代碼例子註釋:藍色– 文件名紅色 –用到log4j的地方
Hello.java
import org.apache.log4j.*;
public class Hello {
static Logger logger = Logger.getLogger(Hello.class);
public static void main(String argv[]) {
PropertyConfigurator.configure("Hello.properties");
logger.debug("Hello world.");
logger.info("What a beatiful day.");
try {
// 假如這裏出現了異常
throw new NullPointerException();
} catch (Exception e) {
logger.warn("NullPointerException", e);
}
}
}
log4j.properties
log4j.rootLogger=debug, 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
#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
log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!--==============================================-->
<!-- -->
<!-- rolling file Appender -->
<!--==============================================-->
<appender name="B1" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="log.htm" />
<param name="Append" value="false" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %p -%m%n" />
</layout>
</appender>
<!--==============================================-->
<!-- -->
<!-- console Appender -->
<!--==============================================-->
<appender name="A1" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %p - %m%n" />
</layout>
</appender>
<!-- define root-->
<root>
<level value="INFO" />
<appender-ref ref="A1" />
<appender-ref ref="B1" />
</root>
</log4j:configuration>
文檔下載:/Files/jenry/log4j.rar
文章轉載自:http://www.cnblogs.com/jenry/archive/2007/04/10/706636.html