java - Log4j_2 和 Socket UDP 附加程序

标签 java sockets udp appender log4j2

我正在尝试创建一个简单的 UDP 服务器来处理来自 Log4j2 Socket 附加程序的包,但我从收到的第二个包中收到“java.io.StreamCorruptedException:无效的流 header :7372003E”。

附加程序:

<Socket name="Socket" host="localhost" port="9500" protocol="UDP" >
    <SerializedLayout /> 
</Socket>

UDP 服务器片段:

public void startSerialized() throws Exception {
    serverSocket = new DatagramSocket(9500);
    LogEvent logEvent = null;
    ObjectInputStream obj = null;
    ByteArrayInputStream bis = null;
    while (true) {
        try {
            receivePacket = new DatagramPacket(packet, packet.length);
            serverSocket.receive(receivePacket);
            bis = new ByteArrayInputStream(receivePacket.getData());
            obj = new ObjectInputStream(bis);
            logEvent = (LogEvent) obj.readObject();
            System.out.println(logEvent.toString());    
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            bis.close();
            obj.close();
        }           
    }
}

大家有什么建议吗?

最佳答案

我使用了您帖子中的相同代码,但我成功地将调试日志获取到服务器端。下面是我的log4j2.xml

    <Socket name="Socket" host="localHost" port="9092" protocol="UDP" >
        <SerializedLayout />
    </Socket>
</appenders>


<loggers>

    <logger name="rezg.gdsws.util" level="info">
        <appender-ref ref="Socket" />
    </logger>

    <logger name="org.apache" level="debug" />  <!-- Otherwise when we enable debug Apache debugs also printed -->

    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
</loggers>

关于java - Log4j_2 和 Socket UDP 附加程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13345400/

相关文章:

java - Kotlin - 实例化 Throwable 时出现 NoSuchMethodError

java - 在没有父类主体的情况下用 Java 编译插件代码

linux - Linux 上 "accepted"fd 上的 setsockopt

c++ - QTcpServer如何从客户端socket中读取数据

java - 将字符串中的 java char 转换为小写/大写

java - Eclipse 运行配置

c++ - 关于通过套接字编程发送图像文件(jpeg、png)的提示/示例?

javascript - 如何使用 nodejs 发送 udp 包?

java - 双向 UDP 组播

sockets - LabVIEW中的UDP广播