log4j基本使用

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



發佈了74 篇原創文章 · 獲贊 9 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章