1-什麼是log4j:
Log4j是Apache的一個開放源代碼項目,通過使用Log4j,我們可以控制日誌信息輸送的目的地是控制檯、文件、GUI組件,甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日誌的輸出格式;通過定義每一條日誌信息的級別,我們能夠更加細緻地控制日誌的生成過程。最令人感興趣的就是,這些可以通過一個配置文件來靈活地進行配置,而不需要修改應用的代碼。(百度百科-http://baike.baidu.com/view/25347.htm?fr=aladdin)
2-爲什麼使用log4j:
在實際項目中,工程很浩大,出錯在所難免,調試在所難免。問題出在哪裏,我們需要知道,這時候就需要一個能夠記錄下我們想要知道的信息,這個就交給log4j來辦。它可以根據我們定製的信息輸出到本地文件或是控制檯,利於我們的開發和調試。
3-怎麼使用log4j:
log4j提供了一個配置文件,log4j.properties 文件用來配置和定製我們需要的信息。
具體內容如下:
<span style="font-size:14px;">##*********在這個配置文件 信息往兩個地方輸出-1:stdout 控制檯; -2:R 文件中 **************##
#放在 src根目錄下 即可#
#等級爲INFO的日誌信息輸出到 stdout 和 R 這兩個地方 可任意起名。
#等級劃分爲:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,
#配置爲OFF則不打出信息,配置爲ALL則打出全部信息,
#此處設置爲 [[INFO -->則只打出INFO、WARN和ERROR的信息]]。
log4j.rootCategory=INFO,stdout , R
#********************************************************
# 往控制檯 ConsoleAppender(控制檯) 輸出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[Log4JTest] %p [%t] %C.%M(%L) | %m%n
#********************************************************
#DailyRollingFileAppender(每天產生一個日誌文件)??
#ConsoleAppender(控制檯)??
#FileAppender(文件)?
#RollingFileAppender(文件大小到達指定尺寸時產生一個新的文件)??
#WriterAppender(將日誌信息以流格式發送到任意指定的地方)
log4j.appender.R=org.apache.log4j.FileAppender
#輸出的文件目錄
log4j.appender.R.File=R\:\\qc.log
#此句定義名爲R的輸出端類型的layout是哪種類型:
#HTMLLayout(以HTML表格形式佈局)??
#PatternLayout(可以靈活地指定佈局模式)??
#SimpleLayout(包含日誌信息的級別和信息字符串)??
#TTCCLayout(包含日誌產生的時間、線程、類別等信息)
log4j.appender.R.layout=org.apache.log4j.TTCCLayout
#PatternLayout(可以靈活地指定佈局模式)?
#%m輸出代碼中指定的消息?
#%p輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL??
#%r輸出自應用啓動到輸出該log信息耗費的毫秒數??%c輸出所屬的類目,通常就是所在類的全名??%t輸出產生該日誌信息的線程名?
#%n輸出一個回車換行符,Windows平臺爲“rn”,Unix平臺爲“n”??
#%d輸出日誌時間點的日期或時間,默認格式爲ISO8601,也可
#以在其後指定格式,比如:%d{yyyy?mmm?dd?HH:mm:ss,SSS},輸出類似:2012年4月27日?22:58:38,921??
#%l輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。
1log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %r %t %c - %m%n
#********************************************************
log4j.logger.com.neusoft=DEBUG
log4j.logger.com.opensymphony.oscache=ERROR
log4j.logger.net.sf.navigator=ERROR
log4j.logger.org.apache.commons=ERROR
log4j.logger.org.apache.struts=WARN
log4j.logger.org.displaytag=ERROR
log4j.logger.org.springframework=DEBUG
log4j.logger.com.ibatis.db=WARN
log4j.logger.org.apache.velocity=FATAL
log4j.logger.com.canoo.webtest=WARN
log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
log4j.logger.org.hibernate=DEBUG
log4j.logger.org.logicalcobwebs=WARN </span>
4-程序中怎麼使用:
|-導入日誌jar包:log4j-1.2.16.jar 和 commons-logging-1.1.1.jar .
|-log4j.properties 屬性文件放在src下.
<span style="font-size:14px;">package com.bdc;
import org.apache.log4j.Logger;
import org.junit.Test;
public class TestLog {
// 不用寫配置文件路徑 log4j.properties 放在src下 即可
public Logger log = Logger.getLogger(TestLog.class);
@Test
public void testLog() {
System.out.println("This is a Test!!");
log.info("gggggggggg ");
log.debug("gsfdsfdsf");
}
}</span>
輸出類似信息:
This is a Test!!
[Log4JTest] INFO [main] com.bdc.TestLog.testLog(13) | gggggggggg
磁盤日誌文件內容:
[main] INFO com.bdc.TestLog - fuck you baby
fuck you baby
[main] INFO com.bdc.TestLog - fuck you baby2
[main] INFO com.bdc.TestLog - gggggggggg
[main] INFO com.bdc.TestLog - gggggggggg