# Log4j SocketAppender Problem



## Happyemo (19. Okt 2009)

Hallo Community, ich habe hier ein kleines Problem mit Log4j:

Ich bekomme zwar einen lauffähigen Client programmiert, allerdings fehlen mir die Passenden Referenzen um einen Server zum starten zu bringen.

Hier der Code vom Client: (nur ein simpler ausschnitt)


```
public class testBatch
{
  private static Logger logger = Logger.getRootLogger();
  
  public static void main( String[] args )
  {
    try {  
      SocketAppender socketAppender = new SocketAppender(Statics.HOSTNAME,Statics.SOCKET_PORT);
      logger.addAppender(socketAppender);
      logger.error("Test"); 
    } catch( Exception ex ) {
      System.out.println( ex );
    }
   
  }
}
```

Nun frage ich mich wie ich einen passenden Listener auf der Serverseite zum laufen bekomm, bzw. wie der Code vom Server eigentlich aussieht. Habe schon ein paar Sachen wie SocketNode aufgefasst, aber leider hab ichs nicht wirklich verstanden. Hat mir da jemand einen Rat?


----------



## Happyemo (23. Okt 2009)

Hat sich erledigt, für die die es interessiert:

Client:

```
...
public void run() 
	        {
		PropertyConfigurator.configureAndWatch( "log.properties", 60*1000 );
		logger.info("test");
		}
```


Server:


```
public class MySocketServer implements Runnable
{

private String portNumber = null;
private ServerSocket serverSocket = null;
private Socket socket =null;
private ObjectInputStream inStream= null;
private LoggingEvent event = null;

public MySocketServer(String portNumber)
	{
	this.portNumber=portNumber;
	try
		{
		this.setServerSocket();
		this.getEntries();
		}
	catch (Exception e)
		{
		e.printStackTrace();
		}
	}

private void setServerSocket() throws IOException
{
serverSocket = new ServerSocket(Integer.parseInt(this.portNumber));
}

private void getEntries() throws IOException, ClassNotFoundException
{
	socket=serverSocket.accept();
	inStream=new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));
	new Thread(this).start();
}


public void run()
{
		try
		{
			while (true)
			{
				event=(LoggingEvent) inStream.readObject();
				System.out.println(event.getMessage());
			}
		}
	catch (Exception e)
		{
		try 
			{
			this.getEntries();
			} 
		catch (Exception e1) 
			{
			e1.printStackTrace();
			} 
		}
		
}


}
```


----------



## Unregistriert (23. Okt 2009)

...damit wäre das thema abgehakt --> close()


----------

