FileDocCategorySizeDatePackage
SocketNode2.javaAPI DocApache log4j 1.2.153126Sat Aug 25 00:09:34 BST 2007com.systemsunion.LoggingServer

SocketNode2

public class SocketNode2 extends Object implements Runnable
Read {@link LoggingEvent} objects sent from a remote client using Sockets (TCP). These logging events are logged according to local policy, as if they were generated locally.

For example, the socket node might decide to log events to a local file and also resent them to a second socket node.

author
Ceki Gülcü
since
0.8.4

Fields Summary
Socket
socket
ObjectInputStream
ois
static Category
cat
Constructors Summary
public SocketNode2(Socket socket)


  
    
	this.socket = socket;
	try {
	  ois = new ObjectInputStream(socket.getInputStream());
	}
	catch(Exception e) {
	  cat.error("Could not open ObjectInputStream to "+socket, e);
	}
  
Methods Summary
public voidrun()

	LoggingEvent event;
	Category remoteCategory;
	String strClientName;

	// Get the client name.
	InetAddress addr = socket.getInetAddress();
	strClientName = addr.getHostName();
	if(strClientName == null || strClientName.length() == 0)
	{
		strClientName = addr.getHostAddress();
	}

	try {
	  while(true) {
	event = (LoggingEvent) ois.readObject();

	if(event.ndc != null)
	{
		event.ndc = strClientName + ":" + event.ndc;
	}
	else
	{
		event.ndc = strClientName;
	}

	remoteCategory = Category.getInstance(event.categoryName);
	remoteCategory.callAppenders(event);
	  }
	}
	catch(java.io.EOFException e) {
	  cat.info("Caught java.io.EOFException will close conneciton.", e);
	}
	catch(java.net.SocketException e) {
	  cat.info("Caught java.net.SocketException, will close conneciton.", e);
	}
	catch(Exception e) {
	  cat.error("Unexpected exception. Closing conneciton.", e);
	}

	try {
	  ois.close();
	}
	catch(Exception e) {
	  cat.info("Could not close connection.", e);
	}