Log4j1.x LoggingEnvent:无法获取对象

Log4j1.x LoggingEnvent : can't get the Object

我使用 Log4j1.x 通过套接字(AsyncAppender 中的 SocketAppender)发送一些 loggingEvent。

我在 LoggingEvent 消息中发送了一个个人对象 Serializable。

在 Chainsaw(服务器范围的示例)中,我想恢复我的私人物品。

我的问题:我无法实例化消息。

错误:

Exception in thread "Thread-5" java.lang.ClassCastException: java.lang.String cannot be cast to com.my.MyPersonnalObject
    at org.apache.log4j.chainsaw.LoggingReceiver$Slurper.run(LoggingReceiver.java:80)
    at java.lang.Thread.run(Unknown Source)

我怎样才能拯救我的对象?

谢谢,

我找到了一个简单的方法。

将 MyPersonnalObject 的 toString 重写为 return JSON 值:

@Override
public String toString()
{
    String str = "";
    try
    {
        str = objectMapper.writeValueAsString(this);
    } catch (JsonProcessingException e)
    {
        StringWriter errors = new StringWriter();
        e.printStackTrace(new PrintWriter(errors));
        str = "ERROR JSON" + errors.toString();
    }
    return str;
}

然后,在另一边,使用:

public static MyPersonnalObject rescure(String jsonStr)
{
    MyPersonnalObject b = null;

    try
    {
        JsonParser jsonParser = jsonFactory.createParser(jsonStr);
        b = objectMapper.readValue(jsonParser, MyPersonnalObject.class);

    } catch (JsonParseException e)
    {
        e.printStackTrace();
    } catch (IOException e)
    {
        e.printStackTrace();
    }
    return b;
}