1. 程式人生 > >在java專案中使用Log4j -2-Logger

在java專案中使用Log4j -2-Logger

       Logger是log4j操作的核心物件,Logger的Name是區分大小寫的,而且支援層級命名規則,類似於Java類的定義,通過名稱空間來區別。

Logger的等級制度

      如果1個Logger的name字首是.及祖輩的Logger的name,那麼就說1個Logger是另1個Logger的祖先。類似地,"java"是"java.util"這個Logger的父親,是"java.util.Vector"這個Logger的祖先。這種命名模式與很多開發語言非常相似。

Root Logger位於Logger最高層級,也就是說,它是所有Logger的祖先。它有2個特別的地方:

      1)、它總是存在;
      2)、不能用name來獲取它;

     呼叫類的靜態方法Logger.getRootLogger可以獲取Root Logger。所有其他的Loggers都是呼叫類的靜態方法Logger.getLogger來例項化的。Logger.getLogger需要傳入要建立的Logger 的name作為引數。Logger類的一些基本的方法如下:

package org.apache.log4j;

  public class Logger {

    // Creation & retrieval methods:
    public static Logger getRootLogger();
    public static Logger getLogger(String name);

    // printing methods:
    public void trace(Object message);
    public void debug(Object message);
    public void info(Object message);
    public void warn(Object message);
    public void error(Object message);
    public void fatal(Object message);

    // generic printing method:
    public void log(Level l, Object message);
}
       你也可以給Logger被指定1個級別,可選的級別有:TRACE,  DEBUG,  INFO,  WARN,  ERROR ,  FATAL。這些可選的級別都定義在org.apache.log4j.Level類中。

       如果給定的Logger沒有指定level,那麼它會從最親近的父輩中繼承level。為了確保所有的Logger都能繼承到level,所以root Logger總是有1個level。下面例子給出關於level繼續的具體說明。

例子1:3個都沒有指定level,所以都使用root的level。

Logger Name

指定的level

最終的level

root

Proot

Proot

X

none

Proot

X.Y

none

Proot

X.Y.Z

none

Proot

例子2:3個都各自指定了level,所以都使用自己的level。

Logger Name

指定的level

最終的level

root

Proot

Proot

X

Px

Px

X.Y

Pxy

Pxy

X.Y.Z

Pxyz

Pxyz

例子3:X.Y沒有指定level,所以它繼承最近的父輩X的level。

Logger Name

指定的level

最終的level

root

Proot

Proot

X

Px

Px

X.Y

none

Px

X.Y.Z

Pxyz

Pxyz

例子4:

Logger Name

指定的level

最終的level

root

Proot

Proot

X

Px

Px

X.Y

none

Px

X.Y.Z

none

Px