在啓動項目後,發現自己定義得日誌文件死活打印不出來,jar包衝突已經排除,日誌配置文件的正確性已經排除,並且這時項目急着上線,該怎麼辦呢?
答案是:自己主動去加載日誌文件,步驟如下:
注: a. 本例是web程序
b. 有人可能會疑問爲什麼不用spring的初始化,因爲spring的初始化會導致service層的日誌失效,所以必須在spring之前將日誌類LogManager初始化完成,這樣就能保證項目中所有的日誌文件都能正常打印,並且
**1. 編寫listener類**
package com. sm. hbase. controller;
import org. apache. log4j. Hierarchy;
import org. apache. log4j. Level;
import org. apache. log4j. LogManager;
import org. apache. log4j. PropertyConfigurator;
import org. apache. log4j. helpers. Loader;
import org. apache. log4j. helpers. OptionConverter;
import org. apache. log4j. spi. Configurator;
import org. apache. log4j. spi. DefaultRepositorySelector;
import org. apache. log4j. spi. LoggerRepository;
import org. apache. log4j. spi. RootLogger;
import javax. servlet. ServletContextEvent;
import javax. servlet. ServletContextListener;
import java. net. MalformedURLException;
import java. net. URL;
public class LogInit implements ServletContextListener {
@Override
public void contextInitialized ( ServletContextEvent servletContextEvent) {
String configurationOptionStr = OptionConverter. getSystemProperty ( "log4j.configuration" , ( String) null) ;
URL url = null;
if ( configurationOptionStr == null) {
url = Loader. getResource ( "log4j.xml" ) ;
if ( url == null) {
url = Loader. getResource ( "log4j.properties" ) ;
}
} else {
try {
url = new URL ( configurationOptionStr) ;
} catch ( MalformedURLException var7) {
url = Loader. getResource ( configurationOptionStr) ;
}
}
Hierarchy h = new Hierarchy ( new RootLogger ( Level. DEBUG) ) ;
DefaultRepositorySelector repositorySelector = new DefaultRepositorySelector ( h) ;
LoggerRepository loggerRepository = repositorySelector. getLoggerRepository ( ) ;
Configurator configurator = new PropertyConfigurator ( ) ;
configurator. doConfigure ( url, loggerRepository) ;
LogManager. setRepositorySelector ( repositorySelector, null) ;
}
@Override
public void contextDestroyed ( ServletContextEvent servletContextEvent) {
}
}
將listener類加入到web.xml中
< listener>
< listener- class > com. sm. hbase. controller. LogInit< / listener- class >
< / listener>