[英]Log4j1.x LoggingEnvent : can't get the Object
I use Log4j1.x for sending by Socket (SocketAppender in AsyncAppender) some loggingEvent. 我使用Log4j1.x通过Socket(AsyncAppender中的SocketAppender)发送一些loggingEvent。
I send a personnal object Serializable in the LoggingEvent message. 我在LoggingEvent消息中发送一个personn对象Serializable。
In the Chainsaw (example of server wide), I would like to recover my personnal object. 在Chainsaw(服务器范围的例子)中,我想恢复我的个人对象。
My problem : I can't instance the message. 我的问题:我无法实例化消息。
the error : 错误 :
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)
How can I rescure my Object ? 我怎样才能重新保护我的物体?
Thanks, 谢谢,
I found a simply way. 我找到了一个简单的方法。
Override the toString of MyPersonnalObject to return an JSON value : 覆盖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;
}
Then, on the other side, use : 然后,在另一边,使用:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.