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.core.net;
    18
    19  import java.io.OutputStream;
    20  import java.io.Serializable;
    21  import java.net.InetAddress;
    22  import java.util.HashMap;
    23  import java.util.Map;
    24
    25  import org.apache.logging.log4j.core.Layout;
    26  import org.apache.logging.log4j.core.appender.OutputStreamManager;
    27
    28  /**
    29   * Abstract base class for managing sockets.
    30   */
    31  public abstract class AbstractSocketManager extends OutputStreamManager {
    32
    33      /**
    34       * The Internet address of the host.
    35       */
    36      protected final InetAddress inetAddress;
    37
    38      /**
    39       * The name of the host.
    40       */
    41      protected final String host;
    42
    43      /**
    44       * The port on the host.
    45       */
    46      protected final int port;
    47
    48      /**
    49       * The Constructor.
    50       * @param name The unique name of this connection.
    51       * @param os The OutputStream to manage.
    52       * @param inetAddress The Internet address.
    53       * @param host The target host name.
    54       * @param port The target port number.
    55       */
    56      public AbstractSocketManager(final String name, final OutputStream os, final InetAddress inetAddress, final String host,
    57                                   final int port, final Layout<? extends Serializable> layout) {
    58          super(os, name, layout);
    59          this.inetAddress = inetAddress;
    60          this.host = host;
    61          this.port = port;
    62      }
    63
    64      /**
    65       * Gets this AbstractSocketManager's content format. Specified by:
    66       * <ul>
    67       * <li>Key: "port" Value: provided "port" param</li>
    68       * <li>Key: "address" Value: provided "address" param</li>
    69       * </ul>
    70       *
    71       * @return Map of content format keys supporting AbstractSocketManager
    72       */
    73      @Override
    74      public Map<String, String> getContentFormat() {
    75          final Map<String, String> result = new HashMap<String, String>(super.getContentFormat());
    76          result.put("port", Integer.toString(port));
    77          result.put("address", inetAddress.getHostAddress());
    78          return result;
    79      }
    80  }