SocketAppender所实现的功能
SocketAppender所实现的功能是将本地的日志LoggingEvent类序列化发送到远程主机,在远程主机中完成反序列化,然后通过其中的方法获取相应的日志信息。
SocketServer
这个SocketServer其主要功能是监听本地的一个端口,这里我们选择官方定义的4560端口号,也就是说SocketServer通过监听4560端口号中的信息,一旦发现有信息写入(ObjectInputStream),即反序列化生成LoggingEvent,通过其中的方法来获取相应的日志信息。
这个SocketServer在源码中就有现成的例子,在源码中的例子是SimpleSocketServer,其中的源码如下:
package org.apache.log4j.net;
import java.net.ServerSocket;
import java.net.Socket;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;
public class SimpleSocketServer {
static Logger cat;
static int port;
public SimpleSocketServer() {
}
public static void main(String[] argv) {
if (argv.length == 2) {
init(argv[0], argv[1]);
} else {
usage("Wrong number of arguments.");
}
try {
cat.info("Listening on port " + port);
ServerSocket serverSocket = new ServerSocket(port);
while(true) {
cat.info("Waiting to accept a new client.");
Socket socket = serverSocket.accept();
cat.info("Connected to client at " + socket.getInetAddress());
cat.info("Starting new socket node.");
(new Thread(new SocketNode(socket, LogManager.getLoggerRepository()),