(1)若是採用log4j輸出日誌,要對log4j加載配置文件的過程有所瞭解。log4j啓動時,默認會尋找source folder下的log4j.xml配置文件,若沒有,會尋找log4j.properties文件。而後加載配置。配置文件放置位置正確,不用在程序中手動加載log4j配置文件。若是將配置文件放到了config文件夾下,在build Path中設置下就行了。java
若要手動加載配置文件以下:web
(1)PropertyConfigurator.configure("log4j.properties") 默認讀取的是項目根目錄的路徑。此時的log4j.properties要放在項目目錄下。spring
如圖,log4j.properties和src是同級目錄,同在根目錄下apache
(2)通常,一個Java項目會有不少的配置文件,建議把全部的配置文件放到一個文件夾下,post
例如,放到config文件夾。那麼在讀取這些配置文件的時候要加上子目錄名稱。ui
如圖在項目目錄下建立config文件夾(注意:不是在src文件下),此時,config和src是同級目錄spa
這時,讀取路徑改成:.net
PropertyConfigurator.configure("config/log4j.properties");debug
(3)項目打成jar包時,通常不會把配置文件也打進jar包。3d
若是是第一種方式,直接將log4j.properties文件和生成的HelloWorld.jar放在同一目錄下,項目就能順利讀取配置文件。
若是是第二種方式,要創建config文件夾,把配置文件放入其中,再將config文件和生成的HelloWorld.jar放在同一目錄下,項目就能順利讀取配置文件。
思考:log4j.properties配置文件,配置簡單,但不支持複雜過濾器filter,log4j.xml雖然配置文件看似複雜,但支持複雜過濾器和Log4j的新特性。推薦使用log4j.xml
===================================================================================================================
3、加載log4j.properties文件
一、spring方式加載,配置與web.xml中:
Spring加載log4j.properties,它提供了一個Log4jConfigListener,自己就能經過web.xml配置從指定位置加載log4j配置文件和log4j的輸出路徑,要注意的是
Log4jConfigListener必需要在Spring的Listener以前。
web.xml
<!-- 設置由Sprng載入的Log4j配置文件位置 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>WEB-INF/classes/log4j.properties</param-value>
</context-param>
<!-- Spring刷新Log4j配置文件變更的間隔,單位爲毫秒 -->
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>10000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
二、能夠經過資源類對資源文件進行加載,與使用爲一體
public class TestLog4j {
public static void main(String[] args) {
PropertyConfigurator.configure( " D:/Code/conf/log4j.properties " );
Logger logger = Logger.getLogger(TestLog4j. class );
logger.debug( " debug " );
logger.error( " error " );
}
}
4、在程序中的使用
在程序中使用Log4j以前,首先要將commons-logging.jar和logging-log4j-1.2.9.jar導入到classpath中,並將log4j.properties放於src根目錄中。接下來就可使用了。
1.獲得記錄器
使用Log4j,第一步就是獲取日誌記錄器,這個記錄器將負責控制日誌信息。其語法爲:
public static Logger getLogger( String name),
經過指定的名字得到記錄器,若是必要的話,則爲這個名字建立一個新的記錄器。Name通常取本類的名字,好比:
static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () ) ;
注:推薦使用commons-logging結合log4j進行日誌記錄
private static Log logger = LogFactory.getLog(Yourclass.class);
2.插入記錄信息(格式化日誌信息)
當上兩個必要步驟執行完畢,您就能夠輕鬆地使用不一樣優先級別的日誌記錄語句插入到您想記錄日誌的任何地方,其語法以下:
Logger.debug ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;
例如:
import org.apache.log4j.*; public class LogTest ...{ static Logger logger = Logger.getLogger(LogTest.class.getName()); public static void main(String[] args) ...{ //經過PropertyConfigurator加載log4j.properties文件,若是不添加這句話,則有spring加載 PropertyConfigurator.configure ( 「.\srclog4j.properties」); logger.debug("Debug ..."); logger.info("Info ..."); logger.warn("Warn ..."); logger.error("Error ..."); } }