Class MulticastAppender

java.lang.Object
org.apache.log4j.AppenderSkeleton
org.apache.log4j.net.MulticastAppender
All Implemented Interfaces:
org.apache.log4j.Appender, NetworkBased, PortBased, org.apache.log4j.spi.OptionHandler

public class MulticastAppender extends org.apache.log4j.AppenderSkeleton implements PortBased
Multicast-based Appender. Works in conjunction with the MulticastReceiver, which expects a LoggingEvent encoded using XMLLayout.

Sends log information as a multicast datagrams.

Messages are not sent as LoggingEvent objects but as text after applying XMLLayout.

The port and remoteHost properties can be set in configuration properties. By setting the remoteHost to a broadcast address any number of clients can listen for log messages.

This was inspired and really extended/copied from SocketAppender. Please see the docs for the proper credit to the authors of that class.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    (package private) InetAddress
     
    private boolean
     
    (package private) String
     
    (package private) static final int
    The default port number for the multicast packets.
    private String
     
    (package private) String
    We remember host name as String in addition to the resolved InetAddress so that it can be returned via getOption().
    private boolean
     
    (package private) MulticastSocket
     
    (package private) int
     
    (package private) String
     
    (package private) int
     
    private org.apache.log4j.net.ZeroConfSupport
     
    static final String
    The MulticastDNS zone advertised by a MulticastAppender the MulticastAppender also adds a 'multicastAddress' property with the multicast address value as a string

    Fields inherited from class org.apache.log4j.AppenderSkeleton

    closed, errorHandler, headFilter, layout, name, tailFilter, threshold
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Open the multicast sender for the RemoteHost and Port.
    void
    append(org.apache.log4j.spi.LoggingEvent event)
     
    void
    Close the Socket and release the underlying connector thread if it has been created
    void
    Close this appender.
    (package private) void
     
    (package private) InetAddress
     
    Returns value of the App option.
    Returns value of the Encoding option.
    boolean
    Returns value of the LocationInfo option.
    int
    Returns value of the Port option.
    Returns value of the RemoteHost option.
    int
    Returns value of the Time to Live option.
    boolean
    Get if item is active.
    boolean
     
    boolean
    Gets whether appender requires a layout.
    void
    setAdvertiseViaMulticastDNS(boolean advertiseViaMulticastDNS)
     
    void
    The App option takes a string value which should be the name of the application getting logged.
    void
    setEncoding(String encoding)
    The Encoding option specifies how the bytes are encoded.
    void
    setLocationInfo(boolean locationInfo)
    The LocationInfo option takes a boolean value.
    void
    setPort(int port)
    The Port option takes a positive integer representing the port where multicast packets will be sent.
    void
    The RemoteHost option takes a string value which should be the host name or ipaddress to send the multicast packets.
    void
    setTimeToLive(int timeToLive)
    The Time to live option takes a positive integer representing the time to live value.

    Methods inherited from class org.apache.log4j.AppenderSkeleton

    addFilter, clearFilters, doAppend, finalize, getErrorHandler, getFilter, getFirstFilter, getLayout, getName, getThreshold, isAsSevereAsThreshold, setErrorHandler, setLayout, setName, setThreshold

    Methods inherited from class java.lang.Object

    clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.apache.log4j.net.NetworkBased

    getName
  • Field Details

    • DEFAULT_PORT

      static final int DEFAULT_PORT
      The default port number for the multicast packets. (9991).
      See Also:
    • ZONE

      public static final String ZONE
      The MulticastDNS zone advertised by a MulticastAppender the MulticastAppender also adds a 'multicastAddress' property with the multicast address value as a string
      See Also:
    • hostname

      String hostname
      We remember host name as String in addition to the resolved InetAddress so that it can be returned via getOption().
    • remoteHost

      String remoteHost
    • application

      String application
    • timeToLive

      int timeToLive
    • address

      InetAddress address
    • port

      int port
    • outSocket

      MulticastSocket outSocket
    • encoding

      private String encoding
    • locationInfo

      private boolean locationInfo
    • advertiseViaMulticastDNS

      private boolean advertiseViaMulticastDNS
    • zeroConf

      private org.apache.log4j.net.ZeroConfSupport zeroConf
  • Constructor Details

    • MulticastAppender

      public MulticastAppender()
  • Method Details

    • activateOptions

      public void activateOptions()
      Open the multicast sender for the RemoteHost and Port.
      Specified by:
      activateOptions in interface org.apache.log4j.spi.OptionHandler
      Overrides:
      activateOptions in class org.apache.log4j.AppenderSkeleton
    • close

      public void close()
      Close this appender.

      This will mark the appender as closed and call then cleanUp() method.

      Specified by:
      close in interface org.apache.log4j.Appender
    • cleanUp

      public void cleanUp()
      Close the Socket and release the underlying connector thread if it has been created
    • connect

      void connect()
    • append

      public void append(org.apache.log4j.spi.LoggingEvent event)
      Specified by:
      append in class org.apache.log4j.AppenderSkeleton
    • getAddressByName

      InetAddress getAddressByName(String host)
    • setRemoteHost

      public void setRemoteHost(String host)
      The RemoteHost option takes a string value which should be the host name or ipaddress to send the multicast packets.
    • getRemoteHost

      public String getRemoteHost()
      Returns value of the RemoteHost option.
    • setLocationInfo

      public void setLocationInfo(boolean locationInfo)
      The LocationInfo option takes a boolean value. If true, the information sent to the remote host will include location information. By default no location information is sent to the server.
    • getLocationInfo

      public boolean getLocationInfo()
      Returns value of the LocationInfo option.
    • setEncoding

      public void setEncoding(String encoding)
      The Encoding option specifies how the bytes are encoded. If this option is not specified, the System encoding is used.
    • getEncoding

      public String getEncoding()
      Returns value of the Encoding option.
    • setApplication

      public void setApplication(String app)
      The App option takes a string value which should be the name of the application getting logged. If property was already set (via system property), don't set here.
    • getApplication

      public String getApplication()
      Returns value of the App option.
    • setTimeToLive

      public void setTimeToLive(int timeToLive)
      The Time to live option takes a positive integer representing the time to live value.
    • getTimeToLive

      public int getTimeToLive()
      Returns value of the Time to Live option.
    • setPort

      public void setPort(int port)
      The Port option takes a positive integer representing the port where multicast packets will be sent.
    • getPort

      public int getPort()
      Returns value of the Port option.
      Specified by:
      getPort in interface PortBased
      Returns:
      int port number
    • isActive

      public boolean isActive()
      Description copied from interface: NetworkBased
      Get if item is active.
      Specified by:
      isActive in interface NetworkBased
      Returns:
      if true, item is active.
    • requiresLayout

      public boolean requiresLayout()
      Gets whether appender requires a layout.
      Specified by:
      requiresLayout in interface org.apache.log4j.Appender
      Returns:
      false
    • isAdvertiseViaMulticastDNS

      public boolean isAdvertiseViaMulticastDNS()
    • setAdvertiseViaMulticastDNS

      public void setAdvertiseViaMulticastDNS(boolean advertiseViaMulticastDNS)