detachListAppender(repository);
}
}
protected void selfInitialize() {
RuleStore rs = new SimpleRuleStore();
rs.addRule(new Pattern("log4j:configuration"), new ConfigurationAction());
rs.addRule(
new Pattern("log4j:configuration/substitutionProperty"),
new SubstitutionPropertyAction());
rs.addRule(
new Pattern("log4j:configuration/repositoryProperty"),
new RepositoryPropertyAction());
rs.addRule(new Pattern("log4j:configuration/plugin"), new PluginAction());
rs.addRule(new Pattern("log4j:configuration/logger"), new LoggerAction());
rs.addRule(
new Pattern("log4j:configuration/logger/level"), new LevelAction());
rs.addRule(
new Pattern("log4j:configuration/logger/priority"), new PriorityAction());
rs.addRule(
new Pattern("log4j:configuration/root"), new RootLoggerAction());
rs.addRule(
new Pattern("log4j:configuration/root/level"), new LevelAction());
rs.addRule(
new Pattern("log4j:configuration/root/priority"), new PriorityAction());
rs.addRule(
new Pattern("log4j:configuration/logger/appender-ref"),
new AppenderRefAction());
rs.addRule(
new Pattern("log4j:configuration/root/appender-ref"),
new AppenderRefAction());
rs.addRule(
new Pattern("log4j:configuration/appender"), new AppenderAction());
rs.addRule(
new Pattern("log4j:configuration/appender/layout"), new LayoutAction());
rs.addRule(
new Pattern("log4j:configuration/appender/layout/conversionRule"),
new ConversionRuleAction());
rs.addRule(
new Pattern("log4j:configuration/newRule"), new NewRuleAction());
rs.addRule(new Pattern("*/param"), new ParamAction());
joranInterpreter = new Interpreter(rs);
// We need to bother with an entity resolver in order to be compatible
// with config files written for DOMConfigurator containing the following: