package org.logtest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class ServerWithLog4j {
private final static int SERVER_PORT = 8001; // this server's port
private static Logger logger = Logger.getLogger(ServerWithLog4j.class);
public static void main(String args[]) {
String clientRequest = null;
BufferedReader reader = null;
PrintWriter writer = null;
ServerSocket server = null;
Socket socket = null;
InputStream in = null;
OutputStream out = null;
PropertyConfigurator.configure("ServerWithLog4j.properties");
try {
server = new ServerSocket(SERVER_PORT);
logger.info("ServerSocket before accept: " + server);
logger.info("Java server with log4j, on-line!");
socket = server.accept();
logger.info("ServerSocket after accept: " + server);
in = socket.getInputStream();
out = socket.getOutputStream();
} catch (IOException e) {
logger.error("Server constructor IOException: " + e);
System.exit(0);
}
reader = new BufferedReader(new InputStreamReader(in));
writer = new PrintWriter(new OutputStreamWriter(out), true);
writer.println("Java server with log4j, " + new Date());
while (true) {
try {
clientRequest = reader.readLine();
logger.debug("Client says: " + clientRequest);
if (clientRequest.startsWith("HELP")) {
logger.debug("OK!");
writer.println("Vocabulary: HELP QUIT");
} else {
if (clientRequest.startsWith("QUIT")) {
logger.debug("OK!");
System.exit(0);
} else {
logger.warn("Command '" + clientRequest
+ "' not understood.");
writer.println("Command '" + clientRequest
+ "' not understood.");
}
}
} catch (IOException e) {
logger.error("IOException in Server " + e);
System.exit(0);
}
}
}
}