Tips & Tricks:Apache log4j簡明教程(一)

  Apache log4j的官方介紹是「log4j is a reliable, fast and flexible logging framework (APIs) written in Java, which is distributed under the Apache Software License. log4j is highly configurable through external configuration files at runtime. It views the logging process in terms of levels of priorities and offers mechanisms to direct logging information to a great variety of destinations, such as a database, file, console, UNIX Syslog, etc.」,翻譯過來就是:log4j是基於Apache Software License發行的可靠、快速、可擴展的日誌框架。log4j具備高可配置性,能夠在運行的過程當中經過外部文件配置它。log4j可以根據不一樣的級別優先權來過濾日誌,而且提供了一種機制,可以將日誌記錄直接寫到控制檯,文件,數據庫,UNIX系統日誌等。數據庫

  上面的官方介紹,不光對log4j進行了定義,也對log4j的特色性能進行了闡述。log4j主要由logger(記錄器),appender(輸出源),layout(佈局模式)三部分組成,其中logger用來捕獲日誌信息,layout用來對日誌信息進行格式化,appender用來定義日誌的輸出源。具體的架構能夠參加下圖:apache

                       

  log4j的安裝方式與添加普通的.jar類庫文件相同,能夠到官網(http://logging.apache.org/log4j/2.x/)下載相關的包,有區別的是log4j須要添加上面提到的配置文件。架構

  那麼配置文件應該如何寫呢?app

  log4j配置文件,全稱爲「log4j.properties」,採用key-value的形式保存參數,也能夠採用XML文檔形式來編寫配置參數。通常狀況下,log4j.properties須要包含過濾級別,日誌目錄,日誌文件名,輸出源,輸出源的詳細實現類,佈局模式,以及相應的格式化參數等配置信息,詳細內容以下:框架

  過濾級別:ALL,TRACE,DEBUG,INFO,WARN,ERROR,FATAL佈局

  輸出源:FILE,DB,Console,對應的詳細實現類爲org.apache.log4j.FileAppender,org.apache.log4j.JDBCAppender,org.apache.log4j.ConsoleAppender。性能

  佈局模式:PatternLayout,HTMLLayout,其中PatternLayout的相應格式化參數(%[])以下表:flex

C              輸出發出日誌記錄請求的類的徹底限定名,如org.example.demo.Test;
d  輸出發生日誌記錄事件的日期,如%d{HH:mm:ss};
m  輸出與日誌記錄事件相關聯的應用程序的信息;
M  輸出發出日誌記錄請求的方法的名稱;
n  輸出與系統平臺相關的換行符;
p  輸出日誌的過濾級別;
X  輸出發出日誌記錄請求的客戶端的IP,如X{clientIP};

  一個採用key-value形式的具體示例以下:ui

# Define the root logger and the directory of log file.
logDir = E:/temp
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE = org.apache.log4j.FileAppender
log4j.appender.FILE.File = ${logDir}/log.txt

# Define the layout for the file appender
log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern = %m%n

  log4j.properties配置文件分爲三部分,第一部分配置了日誌文件的保存目錄logDir,同時說明將日誌的過濾級別設置爲DEBUG,輸出源是FILE;第二部分配置了輸出源的詳細實現類org.apache.log4j.FileAppender,日誌文檔名稱log.txt;第三部分則規定了日誌文檔的佈局模式PatternLayout,及詳細的格式化參數%m%n。spa

  上述配置文件的示例用XML形式編寫後以下: 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>

<appender name="FILE" class="org.apache.log4j.FileAppender">

   <param name="file" value="E:temp/log.txt"/>
   <param name="immediateFlush" value="true"/>
   <param name="threshold" value="debug"/>
   <param name="append" value="false"/>
   
   <layout class="org.apache.log4j.PatternLayout">
      <param name="conversionPattern" value="%m%n"/>
   </layout>
</appender>

<logger name="log4j.rootLogger" additivity="false">
   <level value="DEBUG"/>
   <appender-ref ref="FILE"/>
</logger>

</log4j:configuration>

  配置完log4j.properties是否是就能夠編寫Java程序運行了?

  其實,到這裏log4j的配置工做尚未結束,還須要肯定log4j.properties文件應該放置在哪一個位置。官方介紹說log4j.properties應該放置到PATH或者CLASSPATH所在目錄當中,可是若是按照這樣操做,遇到每一個Java工程都須要定製配置文件問題時,將會很容易形成命名衝突。合適的做法是將log4j.properties與具體的Java工程關聯,將log4j.properties放置到src包中。或者用一種更值得推薦的作法:在Java工程根目錄下新建config目錄 > 將log4j.properties放置到config目錄中 > 鼠標右擊config目錄 > 選擇Build Path > 單擊Use as Source Folder。

  如今就能夠寫個Java類運行一下了,示例以下:

 1 package org.warnier.zhang.demo;
 2 
 3 import org.apache.log4j.Logger;
 4 
 5 public class Test {
 6     /**
 7      * 得到記錄器;
 8      */
 9     static Logger logger = Logger.getLogger(Test.class);
10     
11     public static void main(String[] args) {
12         logger.debug("DEBUG > Hello World!");
13         logger.info("INFO > Hello World!");
14     }
15 
16 }

  到此,Apache log4j簡明教程(一)就結束了,下一講將會講解如何將日誌輸出到MySQL數據庫。但願次教程可以給有困擾的讀者一點幫助。固然,因爲筆者水平有限,若是有錯誤,歡迎讀者留言交流。

相關文章
相關標籤/搜索