log4j——SocketAppender

本文介绍了log4j的SocketAppender功能,它将日志事件序列化并通过Socket发送到远程服务器。SocketServer监听4560端口,接收并反序列化日志信息。示例代码展示了如何使用SimpleSocketServer和SocketClient进行配置和测试,以实现远程日志收集。
摘要由CSDN通过智能技术生成

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()), 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值