/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements. See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache license, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the license for the specific language governing permissions and
 * limitations under the license.
 */
package org.apache.logging.log4j.core.appender.routing;

import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.Core;
import org.apache.logging.log4j.core.config.Node;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
import org.apache.logging.log4j.core.config.plugins.PluginNode;
import org.apache.logging.log4j.status.StatusLogger;

A Route to an appender.
/** * A Route to an appender. */
@Plugin(name = "Route", category = Core.CATEGORY_NAME, printObject = true, deferChildren = true) public final class Route { private static final Logger LOGGER = StatusLogger.getLogger(); private final Node node; private final String appenderRef; private final String key; private Route(final Node node, final String appenderRef, final String key) { this.node = node; this.appenderRef = appenderRef; this.key = key; }
Returns the Dynamic Appender Node.
Returns:The Node.
/** * Returns the Dynamic Appender Node. * @return The Node. */
public Node getNode() { return node; }
Returns the appender reference.
Returns:The Appender reference.
/** * Returns the appender reference. * @return The Appender reference. */
public String getAppenderRef() { return appenderRef; }
Returns the key for this Route.
Returns:the key for this Route.
/** * Returns the key for this Route. * @return the key for this Route. */
public String getKey() { return key; } @Override public String toString() { final StringBuilder sb = new StringBuilder("Route("); sb.append("type="); if (appenderRef != null) { sb.append("static Reference=").append(appenderRef); } else if (node != null) { sb.append("dynamic - type=").append(node.getName()); } else { sb.append("invalid Route"); } if (key != null) { sb.append(" key='").append(key).append('\''); } else { sb.append(" default"); } sb.append(')'); return sb.toString(); }
Create the Route.
Params:
  • appenderRef – The Appender reference.
  • key – The key.
  • node – The Node.
Returns:A Route.
/** * 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); } }