Log4J學習 十六 Log4j的預設啟動流程一

2021-06-27 16:47:35 字數 1852 閱讀 8045

既然要求我們自己來配置log4j,那麼又會出現相關的問題,不管我們採用哪種配置方式,log4j總會要求我們在應用啟動的最開始,完成log4j的配置,所以我們不得不在乙個靜態類的靜態**塊中完成相關的**配置。這對程式設計師和log4j框架本身的使用,都是乙個不友好的設計。

考慮到這些因素,log4j提供了乙個預設初始化流程。這個預設的流程作為靜態**塊註冊在logmanager類中。下面結合logmanager的源**,來看看log4j提供的初始化流程:

hierarchy h = new hierarchy(new rootlogger((level) level.debug));

repositoryselector = new defaultrepositoryselector(h);

建立乙個日誌體系物件,並新建乙個rootlogger作為這個日誌體系的rootlogger,並將rootlogger的日誌級別設定為debug;

string override =optionconverter.getsystemproperty(default_init_override_key,

null);

default_init_override_key的值為log4j.defaultinitoverride,這句**代表,在系統環境中找名字為log4j.defaultinitoverride的系統變數;

if(override == null || "false".equalsignorecase(override)) 

}default_xml_configuration_file=log4j.xml

default_configuration_file=log4j.properties

如果沒有設定log4j.configuration變數,則先嘗試使用classpath下的log4j.xml檔案,如果沒有log4j.xml檔案,則使用classpath下的log4j.properties檔案。

else  catch (malformedurlexception ex) 

}如果設定了log4j.configuration環境變數,則直接使用log4j.configuration環境變數指定的配置檔案來載入配置。

if(url != null)  catch (noclassdeffounderror e) 

} else 

經過前面的配置,如果最終找到乙個配置檔案,則根據配置檔案的型別xml或properties選擇指定的domconfigurator來完成配置,如果配置檔案是properties,則使用propertyconfigurator來完成配置。另外,如果環境變數log4j.configuratorclass設定了乙個確定的配置檔案型別,則使用給定的configurator物件來完成配置。

有了log4j提供的初始化流程,我們就可以直接使用log4j,而不需要再提供自己的初始化**了:

@test

public void testxmlconf() 

在這段測試**中,我們刪除了所有的初始化方法,直接使用logger完成日誌。在classpath下,我們提供兩個配置檔案,乙個xml,乙個properties:

可以看到,在properties檔案中,我們使用******layout輸出日誌級別info;在xml檔案中,我們使用patternlayout輸出日誌級別debug。我們執行測試,控制台輸出:

0 [main] debug cd.itcast.log  - log debug..

0 [main] info cd.itcast.log  - log info..

可以看到,這時候,log4j.xml起了作用。如果刪除log4j.xml,再次執行:

info - log info..

可以看到,這個時候,log4j.properties起了作用。

log4j日誌系統 Log4j

1.1 log4j的三大核心元件 1.2 loggers 記錄器 1.4 layouts 布局 org.apache.log4j.htmllayout 以html 形式布局 org.apache.log4j.patternlayout 可以靈活地指定布局模式 org.apache.log4j.lay...

Log4J學習 十七 Log4j的預設啟動流程二

第二,如果需要不用的應用使用統一的log4j配置,只需要單獨的把log4j.properties檔案或者log4j.xml檔案放到乙個指定的位置,並且使用環境變數log4j.configuration來完成配置檔案的指定。注意,在log4j.configuration的值中,可以使用檔名稱或者url...

log4j學習筆記

先貼幾個官方的東西 log4j日誌等級從高到低 分為off fatal error warn info debug all或者您定義的級別。log4j建議只使用四個級別,優先順序從高到低分別是error warn info debug。通過在這裡定義的級別,您可以控制到應用程式中相應級別的日誌資訊的...