1.1
準備工作
一。
Tomcat
已正確配置與使用。
二。軟件下載:
log4j------http://www.apache.org/dist/jakarta/log4j/jakarta-log4j-1.2.8.zip
1.2. Log4j
簡介
在強調可重用組件開發的今天,除了自己從頭到尾開發一個可重用的日志操作類外,
Apache
為我們提供了一個強有力的日志操作包
-Log4j
。
Log4j
是
Apache
的一個開放源代碼項目,通過使用
Log4j
,我們可以控制日志信息輸送的目的地是控制臺、文件、
GUI
組件、甚至是套接口服務器、
NT
的事件記錄器、
UNIX Syslog
守護進程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,我們能夠更加細致地控制日志的生成過程。最令人感興趣的就是,這些可以通過一個配置文件來靈活地進行配置,而不需要修改應用的代碼。
此外,通過
Log4j
其他語言接口,您可以在
C
、
C++
、
.Net
、
PL/SQL
程序中使用
Log4j
,其語法和用法與在
Java
程序中一樣,使得多語言分布式系統得到一個統一一致的日志組件模塊。而且,通過使用各種第三方擴展,您可以很方便地將
Log4j
集成到
J2EE
、
JINI
甚至是
SNMP
應用中。本文介紹的
Log4j
版本是
1.2.8
,怎樣通過一個配置文件來靈活地進行配置,主要的應用平臺是
Tomcat4.
1.3
。
Log4j
的配置。
首先到
jakarta
下載一個
log4j
的組件。把
jakarta-log4j-1.2.8\dist\lib
下的
log4j-1.2.8.jar
文件
copy
到
classpath
指定的目錄下!可以是
Tomcat
的
common\lib
目錄下,也可以是你需要用到
log4j
的
application
下的
lib
目錄。
1.4
在
Application
目錄下的
web.xml
文件加入以后代碼
log4j
com.apache.jakarta.log4j.Log4jInit
log4j
/WEB-INF/log4j.properties
1
這段代碼的意思是說,在
Tomcat
啟動時加載
com.apache.jakarta.log4j.Log4jInit
這個名叫
Log4jInit.class
這個類文件。其中
Log4jInit.class
的源代碼如下
package com.apache.jakarta.log4j;
import org.apache.log4j.PropertyConfigurator;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Log4jInit extends HttpServlet {
public void init() {
String prefix = getServletContext().getRealPath("/");
String file = getInitParameter("log4j");
// if the log4j-init-file is not set, then no point in trying
System.out.println("................log4j start");
if(file != null) {
PropertyConfigurator.configure(prefix+file);
}
}
public void doGet(HttpServletRequest req, HttpServletResponse res) {
}
}
這段代碼很簡單,可以看出,在加載的過程中,程序會讀取
/WEB-INF/log4j.properties
這個文件
這個文件就是本文的重點,也就是
log4j
的配置文件。
# Set root logger level to DEBUG and its only appender to A1
#log4j
中有五級
logger
#FATAL 0
#ERROR 3
#WARN 4
#INFO 6
#DEBUG 7
#
配置根
Logger
,其語法為:
#log4j.rootLogger = [ level ] , appenderName, appenderName, …
log4j.rootLogger=INFO, A1 ,R
#
這一句設置以為著所有的
log
都輸出
#
如果為
log4j.rootLogger=WARN,
則意味著只有
WARN,ERROR,FATAL
#
被輸出,
DEBUG,INFO
將被屏蔽掉
.
# A1 is set to be a ConsoleAppender.
#log4j
中
Appender
有幾層如控制臺、文件、
GUI
組件、甚至是套接口服務器、
NT
的事件記錄器、
UNIX Syslog
守護進程等
#ConsoleAppender
輸出到控制臺
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1
使用的輸出布局,其中
log4j
提供
4
種布局
. org.apache.log4j.HTMLLayout
(以
HTML
表格形式布局)
#org.apache.log4j.PatternLayout
(可以靈活地指定布局模式),
#org.apache.log4j.SimpleLayout
(包含日志信息的級別和信息字符串),
#org.apache.log4j.TTCCLayout
(包含日志產生的時間、線程、類別等等信息)
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#
靈活定義輸出格式
具體查看
log4j javadoc org.apache.log4j.PatternLayout
#d
時間
....
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
#R
輸出到文件
RollingFileAppender
的擴展,可以提供一種日志的備份功能。
log4j.appender.R=org.apache.log4j.RollingFileAppender
#
日志文件的名稱
log4j.appender.R.File=log4j.log
#
日志文件的大小
log4j.appender.R.MaxFileSize=100KB
#
保存一個備份文件
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.TTCCLayout
#log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
配置以這里就差不多了,如果你想更深入了解配置文件的各個細節,可以去查看
docs
。還有,在文章的最后面我們提供配置文件中一些主要的語法。下面我們來看看怎樣在程序中使用
log4j.
1.4
Log4j
的使用。
使用
Log4j
,第一步就是獲取日志記錄器,這個記錄器將負責控制日志信息。其語法為:
public static Logger getLogger( String name)
,
必須在使用前要把這個類導入
import org.apache.log4j.Logger;
name
一般是類文件的名字,如下:
static Logger logger = Logger.getLogger ("".class.getName () ) ;
您就可以輕松地使用不同優先級別的日志記錄語句插入到您想記錄日志的任何地方,其語法如下:
logger.debug ( Object message ) ;
logger.info ( Object message ) ;
logger.warn ( Object message ) ;
logger.error ( Object message ) ;
為什么這里要分級別的呢?試想一下,我們在寫程序的時候,為了調試程序,會在很多會出錯的地方加入大量的
logger.info();
信息。當然程序調試完畢,我們不需要這些輸出信息了,那怎么辦呢?以前的做法是把每個程序中的
logger.info
刪除,但這是不現實的,如果程序不大還可以,但如果程序很多,做這些事情就很煩人了。但因為
log4j
分級別了,當我們不需要輸出這樣調試時用到的
log.info()
時,我們可以把輸出的級別調高,如調到
warn,
或
error
級別,這樣
info
級別及以下的級別就不會出輸出了,是不是很方便的呢?
其實除了這種使用方式,
log4j
還有其它的使用方面,不需要配置文件,直接在程序中定義輸入出級別,層次等信息,如果要了解這方法的使用,可以參考文檔。
1.5
。附注:
以下是配置文件的一些重要的語法
定義配置文件
其實您也可以完全不使用配置文件,而是在代碼中配置
Log4j
環境。但是,使用配置文件將使您的應用程序更加靈活。
Log4j
支持兩種配置文件格式,一種是
XML
格式的文件,一種是
Java
特性文件(鍵
=
值)。下面我們介紹使用
Java
特性文件做為配置文件的方法:
配置根
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.option = 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.option = valueN
其中,
Log4j
提供的
layout
有以下幾種:
org.apache.log4j.HTMLLayout
(以
HTML
表格形式布局),
org.apache.log4j.PatternLayout
(可以靈活地指定布局模式),
org.apache.log4j.SimpleLayout
(包含日志信息的級別和信息字符串),
org.apache.log4j.TTCCLayout
(包含日志產生的時間、線程、類別等等信息)
posted on 2006-05-09 16:06
小小程序程序員混口飯吃 閱讀(2147)
評論(0) 編輯 收藏 所屬分類:
java