1. 程式人生 > >Log4j基本用法----日誌級別

Log4j基本用法----日誌級別

基本使用方法:
Log4j由三個重要的元件構成:日誌資訊的優先順序,日誌資訊的輸出目的地,日誌資訊的輸出格式。日誌資訊的優先順序從高到低有ERROR、WARN、INFO、DEBUG,分別用來指定這條日誌資訊的重要程度;日誌資訊的輸出目的地指定了日誌將列印到控制檯還是檔案中;而輸出格式則控制了日誌資訊的顯示內容。
日誌資訊的優先順序
org.apache.log4j.Level類提供以下級別,但也可以通過Level類的子類自定義級別。

Level 描述
ALL 各級包括自定義級別
DEBUG 指定細粒度資訊事件是最有用的應用程式除錯
ERROR 錯誤事件可能仍然允許應用程式繼續執行
FATAL 指定非常嚴重的錯誤事件,這可能導致應用程式中止
INFO 指定能夠突出在粗粒度級別的應用程式執行情況的資訊的訊息
OFF 這是最高等級,為了關閉日誌記錄
TRACE 指定細粒度比DEBUG更低的資訊事件
WARN 指定具有潛在危害的情況

日誌級別是如何工作的?
級別p的級別使用q,在記錄日誌請求時,如果p>=q啟用。這條規則是log4j的核心。它假設級別是有序的。對於標準級別它們關係如下:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF。
下面的例子明確指出如何可以過濾所有的DEBUG和INFO訊息。這個程式使用記錄並執行setLevel(Level.X)方法來設定所需的日誌記錄級別。
這個例子將列印,除了除錯和資訊的所有訊息:

import org.apache.log4j.*;

public class LogClass {
   private static org.apache.log4j.Logger log = Logger
                                    .getLogger(LogClass.class);
   public static void main(String[] args) {
      log.setLevel(Level.WARN);

      log.trace("Trace Message!");
      log.debug("Debug Message!");
      log.info("Info Message!");
      log.warn("Warn Message!");
      log.error("Error Message!");
      log.fatal("Fatal Message!");
   }
}

當編譯並執行LogClass程式會產生以下結果:

Warn Message!
Error Message!
Fatal Message!

Log4j提供這些可以讓程式設計師自由更改原始碼,改變除錯級別的配置級別是基於檔案設定。
以下是上面的例子使用 log.setLevel(Level.WARN)方法的配置檔案與上面的例子例子功能一樣。

# Define the root logger with appender file
log = /usr/home/log4j
log4j.rootLogger = WARN, FILE

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

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

現在,使用下面的程式:

import org.apache.log4j.*;

public class LogClass {
   private static org.apache.log4j.Logger log = Logger
                                    .getLogger(LogClass.class);
   public static void main(String[] args) {
      log.trace("Trace Message!");
      log.debug("Debug Message!");
      log.info("Info Message!");
      log.warn("Warn Message!");
      log.error("Error Message!");
      log.fatal("Fatal Message!");
   }
}

現在,編譯和執行上面的程式,得到以下結果在 /usr/home/log4j/log.out 檔案:

Warn Message!
Error Message!
Fatal Message!