下面列出了怎么用org.apache.logging.log4j.core.config.plugins.util.PluginType的API类实例代码及写法,或者点击链接到github查看源代码。
private ConstraintPlugins() {
final PluginManager manager = new PluginManager(ConstraintType.CATEGORY);
if (LOGGER instanceof org.apache.logging.log4j.core.Logger) {
List<String> pluginPackages =
((org.apache.logging.log4j.core.Logger) LOGGER).getContext().getConfiguration().getPluginPackages();
manager.collectPlugins(pluginPackages);
} else {
manager.collectPlugins();
}
final Map<String, PluginType<?>> plugins = manager.getPlugins();
for (Map.Entry<String, PluginType<?>> entry : plugins.entrySet()) {
try {
final Class<? extends ConstraintType> clazz = entry.getValue().getPluginClass().asSubclass(ConstraintType.class);
ConstraintType constraintType = ReflectionUtil.instantiate(clazz);
constraintMap.put(entry.getKey(), constraintType);
} catch (final Throwable t) {
throw new ConstraintCreationException("Unable to create constraint for " + entry.getKey(), t);
}
}
}
public Appender parseAppender(String className, Element appenderElement, XmlConfigurationFactory factory) {
PluginType<?> plugin = plugins.get(className.toLowerCase());
if (plugin != null) {
try {
@SuppressWarnings("unchecked")
AppenderBuilder builder = (AppenderBuilder) LoaderUtil.newInstanceOf(plugin.getPluginClass());
return builder.parseAppender(appenderElement, factory);
} catch (InstantiationException | IllegalAccessException | InvocationTargetException ex) {
LOGGER.warn("Unable to load plugin: {} due to: {}", plugin.getKey(), ex.getMessage());
}
}
return null;
}
public Filter parseFilter(String className, Element filterElement, XmlConfigurationFactory factory) {
PluginType<?> plugin = plugins.get(className.toLowerCase());
if (plugin != null) {
try {
@SuppressWarnings("unchecked")
FilterBuilder builder = (FilterBuilder) LoaderUtil.newInstanceOf(plugin.getPluginClass());
return builder.parseFilter(filterElement, factory);
} catch (InstantiationException | IllegalAccessException | InvocationTargetException ex) {
LOGGER.warn("Unable to load plugin: {} due to: {}", plugin.getKey(), ex.getMessage());
}
}
return null;
}
public Layout parseLayout(String className, Element layoutElement, XmlConfigurationFactory factory) {
PluginType<?> plugin = plugins.get(className.toLowerCase());
if (plugin != null) {
try {
@SuppressWarnings("unchecked")
LayoutBuilder builder = (LayoutBuilder) LoaderUtil.newInstanceOf(plugin.getPluginClass());
return builder.parseLayout(layoutElement, factory);
} catch (InstantiationException | IllegalAccessException | InvocationTargetException ex) {
LOGGER.warn("Unable to load plugin: {} due to: {}", plugin.getKey(), ex.getMessage());
}
}
return null;
}
@Test
public void testPlugin(){
PluginManager pm = new PluginManager(PatternConverter.CATEGORY);
pm.collectPlugins();
for(Entry<String, PluginType<?>> entry : pm.getPlugins().entrySet()){
logger.info("{} : {}", entry.getKey(), entry.getValue());
}
logger.error("[testPlugin]", new IOException("io exception message..."));
}