org.apache.log4j.net
Class SocketHubReceiver

java.lang.Object
  extended by org.apache.log4j.spi.ComponentBase
      extended by org.apache.log4j.plugins.PluginSkeleton
          extended by org.apache.log4j.plugins.Receiver
              extended by org.apache.log4j.net.SocketHubReceiver
All Implemented Interfaces:
java.util.EventListener, NetworkBased, PortBased, SocketNodeEventListener, org.apache.log4j.plugins.Plugin, org.apache.log4j.spi.Component, org.apache.log4j.spi.OptionHandler, org.apache.log4j.spi.Thresholdable

public class SocketHubReceiver
extends org.apache.log4j.plugins.Receiver
implements SocketNodeEventListener, PortBased

SocketHubReceiver receives a remote logging event on a configured socket and "posts" it to a LoggerRepository as if the event was generated locally. This class is designed to receive events from the SocketHubAppender class (or classes that send compatible events).

Once the event has been "posted", it will be handled by the appenders currently configured in the LoggerRespository.

Author:
Mark Womack, Ceki Gülcü, Paul Smith (psmith@apache.org)

Field Summary
protected  boolean active
          Active.
protected  org.apache.log4j.net.SocketHubReceiver.Connector connector
          Connector.
protected  java.lang.String host
          Host.
protected  int port
          Port.
protected  int reconnectionDelay
          Reconnection delay.
protected  java.net.Socket socket
          Socket.
 
Fields inherited from class org.apache.log4j.plugins.Receiver
thresholdLevel
 
Fields inherited from class org.apache.log4j.plugins.PluginSkeleton
name
 
Fields inherited from class org.apache.log4j.spi.ComponentBase
repository
 
Constructor Summary
SocketHubReceiver()
          Create new instance.
SocketHubReceiver(java.lang.String h, int p)
          Create new instance.
SocketHubReceiver(java.lang.String h, int p, org.apache.log4j.spi.LoggerRepository repo)
          Create new instance.
 
Method Summary
 void activateOptions()
          Starts the SocketReceiver with the current options.
 void addSocketNodeEventListener(SocketNodeEventListener l)
          Adds a SocketNodeEventListener to this receiver to be notified of SocketNode events.
 java.lang.String getHost()
          Get the remote host to connect to for logging events.
 int getPort()
          Get the remote port to connect to for logging events.
 int getReconnectionDelay()
          Returns value of the ReconnectionDelay option.
 boolean isActive()
          Returns true if this receiver is active.
 boolean isEquivalent(org.apache.log4j.plugins.Plugin testPlugin)
          Returns true if the receiver is the same class and they are configured for the same properties, and super class also considers them to be equivalent.
 void removeSocketNodeEventListener(SocketNodeEventListener l)
          Removes a specific SocketNodeEventListener from this instance so that it will no longer be notified of SocketNode events.
protected  void setActive(boolean b)
          Sets the flag to indicate if receiver is active or not.
 void setHost(java.lang.String remoteHost)
          Configures the Host property, this will require activateOptions to be called for this to take effect.
 void setPort(int p)
          Set the remote port to connect to for logging events.
 void setPort(java.lang.String remoteHost)
          Set the remote host to connect to for logging events.
 void setReconnectionDelay(int delay)
          The ReconnectionDelay option takes a positive integer representing the number of milliseconds to wait between each failed connection attempt to the server.
 void shutdown()
          Called when the receiver should be stopped.
 void socketClosedEvent(java.lang.Exception e)
          Listen for a socketClosedEvent from the SocketNode.
 void socketOpened(java.lang.String remoteInfo)
          This method does nothing.
 
Methods inherited from class org.apache.log4j.plugins.Receiver
doPost, getThreshold, isAsSevereAsThreshold, setThreshold
 
Methods inherited from class org.apache.log4j.plugins.PluginSkeleton
addPropertyChangeListener, addPropertyChangeListener, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getLoggerRepository, getName, removePropertyChangeListener, removePropertyChangeListener, setLoggerRepository, setName
 
Methods inherited from class org.apache.log4j.spi.ComponentBase
getLogger, getNonFloodingLogger, resetErrorCount
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.log4j.net.NetworkBased
getName
 

Field Detail

host

protected java.lang.String host
Host.


port

protected int port
Port.


reconnectionDelay

protected int reconnectionDelay
Reconnection delay.


active

protected boolean active
Active.


connector

protected org.apache.log4j.net.SocketHubReceiver.Connector connector
Connector.


socket

protected java.net.Socket socket
Socket.

Constructor Detail

SocketHubReceiver

public SocketHubReceiver()
Create new instance.


SocketHubReceiver

public SocketHubReceiver(java.lang.String h,
                         int p)
Create new instance.

Parameters:
h - host
p - port

SocketHubReceiver

public SocketHubReceiver(java.lang.String h,
                         int p,
                         org.apache.log4j.spi.LoggerRepository repo)
Create new instance.

Parameters:
h - host
p - port
repo - logger repository
Method Detail

addSocketNodeEventListener

public void addSocketNodeEventListener(SocketNodeEventListener l)
Adds a SocketNodeEventListener to this receiver to be notified of SocketNode events.

Parameters:
l - listener

removeSocketNodeEventListener

public void removeSocketNodeEventListener(SocketNodeEventListener l)
Removes a specific SocketNodeEventListener from this instance so that it will no longer be notified of SocketNode events.

Parameters:
l - listener

getHost

public java.lang.String getHost()
Get the remote host to connect to for logging events.

Returns:
host

setHost

public void setHost(java.lang.String remoteHost)
Configures the Host property, this will require activateOptions to be called for this to take effect.

Parameters:
remoteHost - address of remote host.

setPort

public void setPort(java.lang.String remoteHost)
Set the remote host to connect to for logging events. Equivalent to setHost.

Parameters:
remoteHost - address of remote host.

getPort

public int getPort()
Get the remote port to connect to for logging events.

Specified by:
getPort in interface PortBased
Returns:
port

setPort

public void setPort(int p)
Set the remote port to connect to for logging events.

Parameters:
p - port

setReconnectionDelay

public void setReconnectionDelay(int delay)
The ReconnectionDelay option takes a positive integer representing the number of milliseconds to wait between each failed connection attempt to the server. The default value of this option is 30000 which corresponds to 30 seconds.

Setting this option to zero turns off reconnection capability.

Parameters:
delay - milliseconds to wait or zero to not reconnect.

getReconnectionDelay

public int getReconnectionDelay()
Returns value of the ReconnectionDelay option.

Returns:
value of reconnection delay option.

isEquivalent

public boolean isEquivalent(org.apache.log4j.plugins.Plugin testPlugin)
Returns true if the receiver is the same class and they are configured for the same properties, and super class also considers them to be equivalent. This is used by PluginRegistry when determining if the a similarly configured receiver is being started.

Specified by:
isEquivalent in interface org.apache.log4j.plugins.Plugin
Overrides:
isEquivalent in class org.apache.log4j.plugins.PluginSkeleton
Parameters:
testPlugin - The plugin to test equivalency against.
Returns:
boolean True if the testPlugin is equivalent to this plugin.

isActive

public boolean isActive()
Returns true if this receiver is active.

Specified by:
isActive in interface NetworkBased
Specified by:
isActive in interface org.apache.log4j.plugins.Plugin
Overrides:
isActive in class org.apache.log4j.plugins.PluginSkeleton
Returns:
true if receiver is active

setActive

protected void setActive(boolean b)
Sets the flag to indicate if receiver is active or not.

Parameters:
b - new value

activateOptions

public void activateOptions()
Starts the SocketReceiver with the current options.

Specified by:
activateOptions in interface org.apache.log4j.spi.OptionHandler

shutdown

public void shutdown()
Called when the receiver should be stopped. Closes the socket

Specified by:
shutdown in interface org.apache.log4j.plugins.Plugin

socketClosedEvent

public void socketClosedEvent(java.lang.Exception e)
Listen for a socketClosedEvent from the SocketNode. Reopen the socket if this receiver is still active.

Specified by:
socketClosedEvent in interface SocketNodeEventListener
Parameters:
e - exception not used.

socketOpened

public void socketOpened(java.lang.String remoteInfo)
This method does nothing.

Specified by:
socketOpened in interface SocketNodeEventListener
Parameters:
remoteInfo - remote info.


Copyright © 2007 Apache Software Foundation. All Rights Reserved.