Package org.apache.log4j.net
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) java.net.InetAddress
address
private boolean
advertiseViaMulticastDNS
(package private) java.lang.String
application
static int
DEFAULT_PORT
The default port number for the UDP packets, 9991.(package private) java.lang.String
encoding
(package private) java.lang.String
hostname
We remember host name as String in addition to the resolved InetAddress so that it can be returned via getOption().(package private) boolean
inError
(package private) java.net.DatagramSocket
outSocket
(package private) int
port
(package private) java.lang.String
remoteHost
private org.apache.log4j.net.ZeroConfSupport
zeroConf
static java.lang.String
ZONE
The MulticastDNS zone advertised by a UDPAppender
-
Constructor Summary
Constructors Constructor Description UDPAppender()
UDPAppender(java.lang.String host, int port)
Sends UDP packets to theaddress
andport
.UDPAppender(java.net.InetAddress address, int port)
Sends UDP packets to theaddress
andport
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
activateOptions()
Open the UDP sender for the RemoteHost and Port.void
append(org.apache.log4j.spi.LoggingEvent event)
void
cleanUp()
Close the UDP Socket and release the underlying connector thread if it has been createdvoid
close()
Close this appender.(package private) void
connect(java.net.InetAddress address, int port)
(package private) java.net.InetAddress
getAddressByName(java.lang.String host)
java.lang.String
getApplication()
Returns value of the App option.java.lang.String
getEncoding()
Returns value of the Encoding option.int
getPort()
Returns value of the Port option.java.lang.String
getRemoteHost()
Returns value of the RemoteHost option.boolean
isActive()
Get if item is active.boolean
isAdvertiseViaMulticastDNS()
boolean
requiresLayout()
The UDPAppender uses layouts.void
setAdvertiseViaMulticastDNS(boolean advertiseViaMulticastDNS)
void
setApplication(java.lang.String app)
The App option takes a string value which should be the name of the application getting logged.void
setEncoding(java.lang.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
setRemoteHost(java.lang.String host)
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 Detail
-
DEFAULT_PORT
public static final int DEFAULT_PORT
The default port number for the UDP packets, 9991.- See Also:
- Constant Field Values
-
hostname
java.lang.String hostname
We remember host name as String in addition to the resolved InetAddress so that it can be returned via getOption().
-
remoteHost
java.lang.String remoteHost
-
application
java.lang.String application
-
encoding
java.lang.String encoding
-
address
java.net.InetAddress address
-
port
int port
-
outSocket
java.net.DatagramSocket outSocket
-
ZONE
public static final java.lang.String ZONE
The MulticastDNS zone advertised by a UDPAppender- See Also:
- Constant Field Values
-
inError
boolean inError
-
advertiseViaMulticastDNS
private boolean advertiseViaMulticastDNS
-
zeroConf
private org.apache.log4j.net.ZeroConfSupport zeroConf
-
-
Method Detail
-
activateOptions
public void activateOptions()
Open the UDP sender for the RemoteHost and Port.- Specified by:
activateOptions
in interfaceorg.apache.log4j.spi.OptionHandler
- Overrides:
activateOptions
in classorg.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 interfaceorg.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(java.net.InetAddress address, int port)
-
append
public void append(org.apache.log4j.spi.LoggingEvent event)
- Specified by:
append
in classorg.apache.log4j.AppenderSkeleton
-
isActive
public boolean isActive()
Description copied from interface:NetworkBased
Get if item is active.- Specified by:
isActive
in interfaceNetworkBased
- Returns:
- if true, item is active.
-
getAddressByName
java.net.InetAddress getAddressByName(java.lang.String host)
-
requiresLayout
public boolean requiresLayout()
The UDPAppender uses layouts. Hence, this method returnstrue
.- Specified by:
requiresLayout
in interfaceorg.apache.log4j.Appender
-
setRemoteHost
public void setRemoteHost(java.lang.String host)
The RemoteHost option takes a string value which should be the host name or ipaddress to send the UDP packets.
-
getRemoteHost
public java.lang.String getRemoteHost()
Returns value of the RemoteHost option.
-
setApplication
public void setApplication(java.lang.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 java.lang.String getApplication()
Returns value of the App option.
-
setEncoding
public void setEncoding(java.lang.String encoding)
The Encoding option specifies how the bytes are encoded. If this option is not specified, the System encoding is used.
-
getEncoding
public java.lang.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.
-
setAdvertiseViaMulticastDNS
public void setAdvertiseViaMulticastDNS(boolean advertiseViaMulticastDNS)
-
isAdvertiseViaMulticastDNS
public boolean isAdvertiseViaMulticastDNS()
-
-