View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements. See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache license, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License. You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the license for the specific language governing permissions and
15   * limitations under the license.
16   */
17  package org.apache.logging.log4j.flume.appender;
18  
19  import org.apache.logging.log4j.Logger;
20  import org.apache.logging.log4j.core.config.plugins.Plugin;
21  import org.apache.logging.log4j.core.config.plugins.PluginAttr;
22  import org.apache.logging.log4j.core.config.plugins.PluginFactory;
23  import org.apache.logging.log4j.status.StatusLogger;
24  
25  /**
26   * Agent Specification for FlumeAvroAppender.
27   */
28  @Plugin(name = "Agent", type = "Core", printObject = true)
29  public final class Agent {
30  
31      private static final String DEFAULT_HOST = "localhost";
32  
33      private static final int DEFAULT_PORT = 35853;
34  
35      private static final Logger LOGGER = StatusLogger.getLogger();
36  
37      private final String host;
38  
39      private final int port;
40  
41      private Agent(String host, int port) {
42          this.host = host;
43          this.port = port;
44      }
45  
46      /**
47       * Retrieve the host name.
48       * @return The name of the host.
49       */
50      public String getHost() {
51          return host;
52      }
53  
54      /**
55       * Retrieve the port number.
56       * @return The port number.
57       */
58      public int getPort() {
59          return port;
60      }
61  
62      @Override
63      public String toString() {
64          return "host=" + host + " port=" + port;
65      }
66  
67      /**
68       * Create an Agent.
69       * @param host The host name.
70       * @param port The port number.
71       * @return The Agent.
72       */
73      @PluginFactory
74      public static Agent createAgent(@PluginAttr("host") String host,
75                                      @PluginAttr("port") String port) {
76          if (host == null) {
77              host = DEFAULT_HOST;
78          }
79  
80          int portNum;
81          if (port != null) {
82              try {
83                  portNum = Integer.parseInt(port);
84              } catch (Exception ex) {
85                  LOGGER.error("Error parsing port number " + port, ex);
86                  return null;
87              }
88          } else {
89              portNum = DEFAULT_PORT;
90          }
91          return new Agent(host, portNum);
92      }
93  }