@Override
public void addInstanceRules(RuleStore rs) {
// parent rules already added
super.addInstanceRules(rs);
rs.addRule(new Pattern("configuration"), new ConfigurationAction());
rs.addRule(new Pattern("configuration/contextName"),
new ContextNameAction());
rs.addRule(new Pattern("configuration/contextListener"),
new LoggerContextListenerAction());
rs.addRule(new Pattern("configuration/insertFromJNDI"),
new InsertFromJNDIAction());
rs.addRule(new Pattern("configuration/evaluator"), new EvaluatorAction());
rs.addRule(new Pattern("configuration/appender/sift"), new SiftAction());
rs.addRule(new Pattern("configuration/appender/sift/*"), new NOPAction());
rs.addRule(new Pattern("configuration/logger"), new LoggerAction());
rs.addRule(new Pattern("configuration/logger/level"), new LevelAction());
rs.addRule(new Pattern("configuration/root"), new RootLoggerAction());
rs.addRule(new Pattern("configuration/root/level"), new LevelAction());
rs.addRule(new Pattern("configuration/logger/appender-ref"),
new AppenderRefAction());
rs.addRule(new Pattern("configuration/root/appender-ref"),
new AppenderRefAction());
// add if-then-else support
rs.addRule(new Pattern("*/if"), new IfAction());
rs.addRule(new Pattern("*/if/then"), new ThenAction());
rs.addRule(new Pattern("*/if/then/*"), new NOPAction());
rs.addRule(new Pattern("*/if/else"), new ElseAction());
rs.addRule(new Pattern("*/if/else/*"), new NOPAction());
// add jmxConfigurator only if we have JMX available.
// If running under JDK 1.4 (retrotranslateed logback) then we
// might not have JMX.
if (PlatformInfo.hasJMXObjectName()) {
rs.addRule(new Pattern("configuration/jmxConfigurator"),
new JMXConfiguratorAction());
}
rs.addRule(new Pattern("configuration/include"), new IncludeAction());
rs.addRule(new Pattern("configuration/consolePlugin"),
new ConsolePluginAction());
rs.addRule(new Pattern("configuration/receiver"),
new ReceiverAction());
}