Log4j1.x LoggingEnvent:无法获取对象

Xpmich

我使用Log4j1.x通过Socket(在AsyncAppender中为SocketAppender)发送一些loggingEvent。

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

在电锯(服务器范围的示例)中,我想恢复我的个人对象。

  • 我可以显示类名称(event.getMessage()。toString())
  • 我可以扔东西
  • 我的个人对象在一个库中,两个项目中都相同。

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

错误 :

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)

如何修复我的对象?

谢谢,

Xpmich

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

重写MyPersonnalObject的toString以返回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;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章