在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類的一些基本的方法如下:
你也可以給Logger被指定1個級別,可選的級別有:TRACE, DEBUG, INFO, WARN, ERROR , FATAL。這些可選的級別都定義在org.apache.log4j.Level類中。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沒有指定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 |
Logger Name |
指定的level |
最終的level |
root |
Proot |
Proot |
X |
Px |
Px |
X.Y |
Pxy |
Pxy |
X.Y.Z |
Pxyz |
Pxyz |
Logger Name |
指定的level |
最終的level |
root |
Proot |
Proot |
X |
Px |
Px |
X.Y |
none |
Px |
X.Y.Z |
Pxyz |
Pxyz |
Logger Name |
指定的level |
最終的level |
root |
Proot |
Proot |
X |
Px |
Px |
X.Y |
none |
Px |
X.Y.Z |
none |
Px |