@Test public void testRoutingAppenderDefaultRouteKey() { final RoutingAppender routingAppender = getRoutingAppender(); Assert.assertNotNull(routingAppender.getDefaultRouteScript()); Assert.assertNotNull(routingAppender.getDefaultRoute()); Assert.assertEquals("Service2", routingAppender.getDefaultRoute().getKey()); }
public Route getRoute(final String key) { for (final Route route : routes) { if (Objects.equals(route.getKey(), key)) { return route; } } return null; }
private synchronized AppenderControl getControl(final String key, final LogEvent event) { AppenderControl control = appenders.get(key); if (control != null) { return control; } Route route = null; for (final Route r : routes.getRoutes()) { if (r.getAppenderRef() == null && key.equals(r.getKey())) { route = r; break; } } if (route == null) { route = defaultRoute; control = appenders.get(DEFAULT_KEY); if (control != null) { return control; } } if (route != null) { final Appender app = createAppender(route, event); if (app == null) { return null; } control = new AppenderControl(app, null, null); appenders.put(key, control); } return control; }
private RoutingAppender(final String name, final Filter filter, final boolean ignoreExceptions, final Routes routes, final RewritePolicy rewritePolicy, final Configuration configuration, final PurgePolicy purgePolicy, final AbstractScript defaultRouteScript) { super(name, filter, null, ignoreExceptions); this.routes = routes; this.configuration = configuration; this.rewritePolicy = rewritePolicy; this.purgePolicy = purgePolicy; if (this.purgePolicy != null) { this.purgePolicy.initialize(this); } this.defaultRouteScript = defaultRouteScript; Route defRoute = null; for (final Route route : routes.getRoutes()) { if (route.getKey() == null) { if (defRoute == null) { defRoute = route; } else { error("Multiple default routes. Route " + route.toString() + " will be ignored"); } } } defaultRoute = defRoute; }
@Override public void append(LogEvent event) { if (rewritePolicy != null) { event = rewritePolicy.rewrite(event); } final String pattern = routes.getPattern(event, scriptStaticVariables); final String key = pattern != null ? configuration.getStrSubstitutor().replace(event, pattern) : defaultRoute.getKey(); final AppenderControl control = getControl(key, event); if (control != null) { control.callAppender(event); } if (purgePolicy != null) { purgePolicy.update(key, event); } }
private Appender createAppender(final Route route, final LogEvent event) { final Node routeNode = route.getNode(); for (final Node node : routeNode.getChildren()) { if (node.getType().getElementName().equals(Appender.ELEMENT_TYPE)) { final Node appNode = new Node(node); configuration.createConfiguration(appNode, event); if (appNode.getObject() instanceof Appender) { final Appender app = appNode.getObject(); app.start(); return app; } error("Unable to create Appender of type " + node.getName()); return null; } } error("No Appender was configured for route " + route.getKey()); return null; }
final Appender appender = configuration.getAppender(route.getAppenderRef()); if (appender != null) { final String key = route == defaultRoute ? DEFAULT_KEY : route.getKey(); appenders.put(key, new AppenderControl(appender, null, null)); } else {