1 package ch.qos.logback.access.sift; 2 3 import java.util.Collection; 4 import java.util.HashMap; 5 import java.util.Map; 6 7 import ch.qos.logback.access.spi.AccessEvent; 8 import ch.qos.logback.core.Appender; 9 import ch.qos.logback.core.joran.action.ActionConst; 10 import ch.qos.logback.core.joran.action.AppenderAction; 11 import ch.qos.logback.core.joran.spi.Pattern; 12 import ch.qos.logback.core.joran.spi.RuleStore; 13 import ch.qos.logback.core.sift.SiftingJoranConfiguratorBase; 14 15 public class SiftingJoranConfigurator extends SiftingJoranConfiguratorBase<AccessEvent> { 16 17 String key; 18 String value; 19 20 SiftingJoranConfigurator(String key, String value) { 21 this.key = key; 22 this.value = value; 23 } 24 25 @Override 26 protected Pattern initialPattern() { 27 return new Pattern("configuration"); 28 } 29 30 @Override 31 protected void addInstanceRules(RuleStore rs) { 32 rs.addRule(new Pattern("configuration/appender"), new AppenderAction()); 33 } 34 35 @Override 36 protected void buildInterpreter() { 37 super.buildInterpreter(); 38 Map<String, Object> omap = interpreter.getInterpretationContext().getObjectMap(); 39 omap.put(ActionConst.APPENDER_BAG, new HashMap()); 40 omap.put(ActionConst.FILTER_CHAIN_BAG, new HashMap()); 41 Map<String, String> propertiesMap = new HashMap<String, String>(); 42 propertiesMap.put(key, value); 43 interpreter.setInterpretationContextPropertiesMap(propertiesMap); 44 } 45 46 @SuppressWarnings("unchecked") 47 public Appender<AccessEvent> getAppender() { 48 Map<String, Object> omap = interpreter.getInterpretationContext().getObjectMap(); 49 HashMap map = (HashMap) omap.get(ActionConst.APPENDER_BAG); 50 Collection values = map.values(); 51 return (Appender<AccessEvent>) values.iterator().next(); 52 } 53 }