log4j的默認level

通過log4j.xml配置logger時一般要指定<level value="${xxx_loggingLevel}" />,如果將這段漏掉了,log4j會設置一個null level。但需要注意的是這樣不會有問題。

Category的getEffectiveLevel()方法:

/** 
Starting from this category, search the category hierarchy for a 
non-null level and return it. Otherwise, return the level of the 
root category. 
The Category class is designed so that this method executes as 
quickly as possible. 

*/ 
public 
Level getEffectiveLevel() { 
for(Category c = this; c != null; c=c.parent) { 
if(c.level != null) 
return c.level; 
} 
return null; // If reached will cause an NullPointerException. 
} 
從當前Category開始,向上尋找第一個有效的Level。

最終會找到rootLogger的level,rootLogger的level不可能爲空(setLeve時做了限制)

再看下Logmanager

Hierarchy h = new Hierarchy(new RootLogger((Level) Level.DEBUG));

rootLogger的level初始爲DEBUG級別。所以在這種情況下會以debug級別打日誌。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章