Java 将OtroLogViewer与SocketHubAppender一起使用时出错

Java 将OtroLogViewer与SocketHubAppender一起使用时出错,java,logging,log4j,otroslogviewer,Java,Logging,Log4j,Otroslogviewer,我正在尝试使用链锯以外的东西,它似乎不再受支持,而且不能用Java1.8.072启动。我尝试使用与链锯相同的Log4j文件创建OtrosLogView,但我一直遇到以下错误: java.lang.ClassCastException: java.net.Inet4Address cannot be cast to java.lang.String at pl.otros.logview.parser.log4j.Log4jUtil.translateLog4j(Log4jUtil

我正在尝试使用链锯以外的东西,它似乎不再受支持,而且不能用Java1.8.072启动。我尝试使用与链锯相同的Log4j文件创建OtrosLogView,但我一直遇到以下错误:

java.lang.ClassCastException: java.net.Inet4Address cannot be cast to java.lang.String
        at pl.otros.logview.parser.log4j.Log4jUtil.translateLog4j(Log4jUtil.java:68)
        at pl.otros.logview.importer.Log4jSerilizedLogImporter.importLogs(Log4jSerilizedLogImporter.java:67)
        at pl.otros.logview.reader.SocketLogReader$SocketHandler.run(SocketLogReader.java:103)
        at java.lang.Thread.run(Thread.java:745)
以下是我的log4j配置文件的详细信息:

log4j.rootCategory=DEBUG stdout, SOCKET

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%t] %-5p %c{1}:%L - %m%n
log4j.appender.stdout.threshold=ERROR

log4j.appender.SOCKET=org.apache.log4j.net.SocketHubAppender
log4j.appender.SOCKET.RemoteHost=localhost
log4j.appender.SOCKET.Port=50505
log4j.appender.SOCKET.LocationInfo=true
log4j.appender.SOCKET.ReconnectionDelay=10000
log4j.appender.SOCKET.threshold=DEBUG
这行不通,我真的很沮丧。我查看了OtrosLogViewer的源代码,在这里可以看到错误发生的地方:

// Starting from line 64 of pl.otros.logview.parser.log4j.Log4jUtil.translateLog4j() 
ld.setProperties(IMMUTABLE_EMPTY_MAP);
Map properties = event.getProperties();
if (properties != null) {
      Map<String, String> props = new HashMap<>(properties.size());
      for (Object key : properties.keySet()) {
        String value = (String) properties.get(key);
        if (StringUtils.isNotBlank(value)) {
          props.put(key.toString(), value);
        }
      }
      if (props.size() > 0) {
        ld.setProperties(props);
      }
}
//从pl.otros.logview.parser.log4j.Log4jUtil.translateLog4j()的第64行开始
设置属性(不可变的空映射);
映射属性=event.getProperties();
如果(属性!=null){
Map props=newhashmap(properties.size());
for(对象键:properties.keySet()){
字符串值=(字符串)属性.get(键);
if(StringUtils.isNotBlank(值)){
props.put(key.toString(),value);
}
}
如果(props.size()>0){
ld.setProperties(props);
}
}

正如您所看到的,它将所有属性视为字符串,但作为错误报告,并非所有属性都是字符串,因为其中一个是Inet4Address。为什么他们不直接在价值上做一个toString而不是铸造它呢?我想我可以检查代码并尝试自己修复它,但是有没有办法让SocketHubAdapter将属性值作为字符串发送?

链锯有什么问题?开发人员快照版本?我检查了Chainsaw的源代码,并构建了代码,效果非常好。在最新版本中,它可以记住您的设置,这样您就不必在每次启动时都选择配置,这很好。欢迎增强请求,或者如果您愿意参与,欢迎您加入乐趣。