(1)如果采用log4j輸出日志,要對log4j加載配置文件的過程有所了解。log4j啟動時,默認會尋找source folder下的log4j.xml配置文件,若沒有,會尋找log4j.properties文件。然后加載配置。配置文件放置位置正確,不用在程序中手動加載log4j配置文件。如果將配置文件放到了config文件夾下,在build Path中設置下就好了。
若要手動加載配置文件如下:
(1)PropertyConfigurator.configure("log4j.properties") 默認讀取的是項目根目錄的路徑。此時的log4j.properties要放在項目目錄下。
如圖,log4j.properties和src是同級目錄,同在根目錄下
(2)一般,一個Java項目會有很多的配置文件,建議把所有的配置文件放到一個文件夾下,
例如,放到config文件夾。那么在讀取這些配置文件的時候要加上子目錄名稱。
如圖在項目目錄下創建config文件夾(注意:不是在src文件下),此時,config和src是同級目錄
這時,讀取路徑改為:
PropertyConfigurator.configure("config/log4j.properties");
(3)項目打成jar包時,一般不會把配置文件也打進jar包。
如果是第一種方式,直接將log4j.properties文件和生成的HelloWorld.jar放在同一目錄下,項目就能順利讀取配置文件。
如果是第二種方式,要建立config文件夾,把配置文件放入其中,再將config文件和生成的HelloWorld.jar放在同一目錄下,項目就能順利讀取配置文件。
思考:log4j.properties配置文件,配置簡單,但不支持復雜過濾器filter,log4j.xml雖然配置文件看似復雜,但支持復雜過濾器和Log4j的新特性。推薦使用log4j.xml
===================================================================================================================
三、加載log4j.properties文件
1、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>
2、可以通過資源類對資源文件進行加載,與使用為一體
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 " );
}
}
四、在程序中的使用
在程序中使用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 ..."); } }