@Test public void testRoutingAppenderDefaultRouteKey() { final RoutingAppender routingAppender = getRoutingAppender(); Assert.assertNotNull(routingAppender.getDefaultRouteScript()); Assert.assertNotNull(routingAppender.getDefaultRoute()); Assert.assertEquals("Service2", routingAppender.getDefaultRoute().getKey()); }
Route defaultRoute = Route.createRoute(null, "${ctx:queryId}", defaultRouteNode); Route mdcRoute = Route.createRoute(null, null, queryIdRouteNode);
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; }
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 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; }
@PUT @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public String putTodo(JAXBElement<Route> r) { Route route = r.getValue(); route.toString(); System.out.println("Received PUT XML/JSON Request"); return "ok"; }
/** * Create the Route. * @param appenderRef The Appender reference. * @param key The key. * @param node The Node. * @return A Route. */ @PluginFactory public static Route createRoute( @PluginAttribute("ref") final String appenderRef, @PluginAttribute("key") final String key, @PluginNode final Node node) { if (node != null && node.hasChildren()) { if (appenderRef != null) { LOGGER.error("A route cannot be configured with an appender reference and an appender definition"); return null; } } else { if (appenderRef == null) { LOGGER.error("A route must specify an appender reference or an appender definition"); return null; } } return new Route(node, appenderRef, key); } }
if (route.getAppenderRef() != 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 { error("Appender " + route.getAppenderRef() + " cannot be located. Route ignored");
@Override public String toString() { final StringBuilder sb = new StringBuilder("{"); boolean first = true; for (final Route route : routes) { if (!first) { sb.append(','); } first = false; sb.append(route.toString()); } sb.append('}'); return sb.toString(); }
public Route getRoute(final String key) { for (final Route route : routes) { if (Objects.equals(route.getKey(), key)) { return route; } } return null; }
Node nullNode = new Node(null, "Route", defaultType); nullNode.getChildren().add(nullChildNode); Route defaultRoute = Route.createRoute(null, "${ctx:queryId}", nullNode); childNode.getChildren().add(layoutNode); Route mdcRoute = Route.createRoute(null, null, node); Routes routes = Routes.createRoutes("${ctx:queryId}", defaultRoute, mdcRoute);
@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); } }