一、什么是log4j
Log4j 是Apache的一個開放源代碼項目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制臺、文件、GUI組件、甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,我們能夠更加細致地控制日志的生成過程。最令人感興趣的就是,這些可以通過一個配置文件來靈活地進行配置,而不需要修改應用的代碼。

二、日志簡介
日志指在程序中插入語句以提供調試信息。使用日志能夠監視程序的執行。例如,用戶利用日志可以獲得關于應用程序故障的完整信息。用戶可以將調試語句(如 System.out.println)插入到程序中以獲得詳細的調試信息。

三、項目中為什么要用log4j
大家在編程時經常不可避免地要使用到一些日志操作,比如開發階段的調試信息、運行時的日志記錄及審計。調查顯示,日志代碼占代碼總量的4%。通常大家可以簡單地使用System.out.println()語句輸出日志信息,但是往往會有一些判斷,比如:
 
if (someCondition)
{
  System.out.println("some information.");
}

這些判斷造成正常的程序邏輯中混雜了大量的輸出語句。而在開發階段寫下的這些判斷僅為了調試的語句,在開發完成時需要查找并移除。部署運行后,尤其是在一些企業應用系統中,還經常需要進一步調試,這時就遇到了更大的麻煩。所以,我們需要一套完備的、靈活的、可配置的日志工具log4J就是優秀的選擇。

四、log4j組件
Log4j 由 logger、appender 和 layout 三個組件組成。可以通過同名的 Java 類訪問 Log4j 的這三個組件。

Logger - 在執行應用程序時,接收日志語句生成的日志請求。它是一種重要的日志處理組件, 可以通過 log4j API 的 logger 類對其進行訪問。它的方法有:debug、info、warn、error、fatal 和 log。這些方法用于記錄消息。
Appender - 管理日志語句的輸出結果。執行日志語句時,Logger 對象將接收來自日志語句的記錄請求。此請求是通過 logger 發送至 appender 的。然后,Appender 將輸出結果寫入到用戶選擇的目的地。對于不同的日志目的地,提供不同的 appender 類型。這些 appender 包括:用于文件的 file appender、用于數據庫的 JDBC appender 和用于 SMTP 服務器的 SMTP appender。
Layout - 用于指定 appender 將日志語句寫入日志目的地所采用的格式。appender 可以用來格式化輸出結果的各種布局包括:簡單布局、模式布局和 HTML 布局。