Class UDPAppender

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

public class UDPAppender extends org.apache.log4j.AppenderSkeleton implements PortBased
Sends log information as a UDP datagrams.

The UDPAppender is meant to be used as a diagnostic logging tool so that logging can be monitored by a simple UDP client.

Messages are not sent as LoggingEvent objects but as text after applying the designated Layout.

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
     
    static final int
    The default port number for the UDP packets, 9991.
    (package 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().
    (package private) boolean
     
    (package private) DatagramSocket
     
    (package private) int
     
    (package private) String
     
    private org.apache.log4j.net.ZeroConfSupport
     
    static final String
    The MulticastDNS zone advertised by a UDPAppender

    Fields inherited from class org.apache.log4j.AppenderSkeleton

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

    Constructors
    Constructor
    Description
     
    UDPAppender(String host, int port)
    Sends UDP packets to the address and port.
    UDPAppender(InetAddress address, int port)
    Sends UDP packets to the address and port.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Open the UDP sender for the RemoteHost and Port.
    void
    append(org.apache.log4j.spi.LoggingEvent event)
     
    void
    Close the UDP Socket and release the underlying connector thread if it has been created
    void
    Close this appender.
    (package private) void
    connect(InetAddress address, int port)
     
    (package private) InetAddress
     
    Returns value of the App option.
    Returns value of the Encoding option.
    int
    Returns value of the Port option.
    Returns value of the RemoteHost option.
    boolean
    Get if item is active.
    boolean
     
    boolean
    The UDPAppender uses layouts.
    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
    setPort(int port)
    The Port option takes a positive integer representing the port where UDP packets will be sent.
    void
    The RemoteHost option takes a string value which should be the host name or ipaddress to send the UDP packets.

    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

      public static final int DEFAULT_PORT
      The default port number for the UDP packets, 9991.
      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
    • encoding

      String encoding
    • address

      InetAddress address
    • port

      int port
    • outSocket

      DatagramSocket outSocket
    • ZONE

      public static final String ZONE
      The MulticastDNS zone advertised by a UDPAppender
      See Also:
    • inError

      boolean inError
    • advertiseViaMulticastDNS

      private boolean advertiseViaMulticastDNS
    • zeroConf

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

    • UDPAppender

      public UDPAppender()
    • UDPAppender

      public UDPAppender(InetAddress address, int port)
      Sends UDP packets to the address and port.
    • UDPAppender

      public UDPAppender(String host, int port)
      Sends UDP packets to the address and port.
  • Method Details

    • activateOptions

      public void activateOptions()
      Open the UDP 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 UDP Socket and release the underlying connector thread if it has been created
    • connect

      void connect(InetAddress address, int port)
    • append

      public void append(org.apache.log4j.spi.LoggingEvent event)
      Specified by:
      append in class org.apache.log4j.AppenderSkeleton
    • 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.
    • getAddressByName

      InetAddress getAddressByName(String host)
    • requiresLayout

      public boolean requiresLayout()
      The UDPAppender uses layouts. Hence, this method returns true.
      Specified by:
      requiresLayout in interface org.apache.log4j.Appender
    • setRemoteHost

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

      public String getRemoteHost()
      Returns value of the RemoteHost 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.
    • 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.
    • setPort

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

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

      public void setAdvertiseViaMulticastDNS(boolean advertiseViaMulticastDNS)
    • isAdvertiseViaMulticastDNS

      public boolean isAdvertiseViaMulticastDNS()