下面列出了怎么用org.apache.log4j.Hierarchy的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
public void testIndependentSpaceLog4j() {
LoggerRepository repo1 = new Hierarchy(new RootLogger((Level) Level.DEBUG));
URL url1 = LogbackTest.class.getResource("/com/alipay/sofa/rpc/log/log4j/log-conf.xml");
OptionConverter.selectAndConfigure(url1, null, repo1);
Logger logger1 = repo1.getLogger("com.foo.Bar");
Assert.assertNotNull(logger1);
//log4j logger 2
LoggerRepository repo2 = new Hierarchy(new RootLogger((Level) Level.DEBUG));
URL url2 = LogbackTest.class.getResource("/com/alipay/sofa/rpc/log/log4j/log4j_b.xml");
OptionConverter.selectAndConfigure(url2, null, repo2);
Logger logger2 = repo1.getLogger("com.foo.Bar2");
Assert.assertNotNull(logger2);
Assert.assertNotSame(logger1, logger2);
}
@Test
public void testLocalProperties() throws NoSuchFieldException, IllegalAccessException {
LoggerRepository repo2 = new Hierarchy(new RootLogger((Level) Level.DEBUG));
URL url2 = LogbackTest.class.getResource("/com/alipay/sofa/rpc/log/log4j/log4j_b.xml");
DOMConfigurator domConfigurator = new DOMConfigurator();
Field field = DOMConfigurator.class.getDeclaredField("props");
field.setAccessible(true);
Properties props = new Properties();
field.set(domConfigurator, props);
props.put("hello", "defaultb");
domConfigurator.doConfigure(url2, repo2);
Logger logger2 = repo2.getLogger("com.foo.Bar3");
Assert.assertTrue(logger2.getAllAppenders().hasMoreElements());
}
private void removeCachedLoggers() {
((Hierarchy) LogManager.getLoggerRepository()).clear();
}