這是本文件的舊版!


Bridge JUL to SLF4j

log4j.rootCategory=WARN, CONSOLE

.level= ALL
handlers= java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level= ALL

log4j.additivity.expect4j=false
log4j.logger.expect4j=TRACE, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=TRACE
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{dd/MM HH:mm:ss} %5p[%t] %X{usedheap}(%F:%M:%L) - %m%n

@Test
public void test() throws Exception {
	readLog4jConfigFromClasspath();
	//readLog4jConfigFromFilePath();
 
	SLF4JBridgeHandler.removeHandlersForRootLogger();
	SLF4JBridgeHandler.install();
 
	Expect4j.log.finest("test1");
	Expect4j.log.info("test2");
	Expect4j.log.fine("test3");
}

Load from ClassPath

private void readLog4jConfigFromClasspath(){
	InputStream is = this.getClass().getResourceAsStream("/log4j.properties");
	try { 
		LogManager.getLogManager().readConfiguration(is); 
	} catch(Exception e) {
		throw new RuntimeException(e);
	} finally {
		Cleaner.close(is);
	}
}

Load from FilePath

private void readLog4jConfigFromFilePath(){
	Properties prop = System.getProperties();
	prop.setProperty("java.util.logging.config.file", "test/log4j.properties"); 
	try { 
		LogManager.getLogManager().readConfiguration(); 
	} catch(Exception e) {
		throw new RuntimeException(e);
	}
}