如何在 RapidMiner 扩展中记录第 3 方输出?
How to log 3rd party output in RapidMiner extension?
我正在尝试为 RapidMiner 编写一个数据源,它包装了我公司开发多年的 API 连接器库。
代码很好,但无法实例化某些 类。我正在寻找原因,但 RapidMiner 似乎抑制了第 3 方库日志输出。
我们的库使用 Log4J,为了调查,我添加了一个 hack:
Logger.getRootLogger().setLevel(Level.DEBUG);
// the appender writes the Log4J output to the JUL logger of RapidMiner
Logger.getRootLogger().addAppender(new AppenderSkeleton() {
@Override
public boolean requiresLayout() {
return false;
}
@Override
public void close() {}
@Override
protected void append(final LoggingEvent event) {
getLogger().info(event.getRenderedMessage());
}
});
因此它至少将 WARN 消息写入 RapidMiner 日志。
然后我发现this article说有些操作是不允许的。那可能是我问题的根源。
所以我的问题:
- 如何实现 RapidMiner 记录所有第 3 方库输出?
- 为什么 RapidMiner 不记录安全违规?这对调查有很大帮助。
- 是否有机会绕过 RapidMiner 的所有安全限制,至少对于开发而言?
我会重新发布到 RapidMiner 社区(转到 Developer forum),因为开发人员会定期监控该频道。
我正在尝试为 RapidMiner 编写一个数据源,它包装了我公司开发多年的 API 连接器库。
代码很好,但无法实例化某些 类。我正在寻找原因,但 RapidMiner 似乎抑制了第 3 方库日志输出。
我们的库使用 Log4J,为了调查,我添加了一个 hack:
Logger.getRootLogger().setLevel(Level.DEBUG);
// the appender writes the Log4J output to the JUL logger of RapidMiner
Logger.getRootLogger().addAppender(new AppenderSkeleton() {
@Override
public boolean requiresLayout() {
return false;
}
@Override
public void close() {}
@Override
protected void append(final LoggingEvent event) {
getLogger().info(event.getRenderedMessage());
}
});
因此它至少将 WARN 消息写入 RapidMiner 日志。
然后我发现this article说有些操作是不允许的。那可能是我问题的根源。
所以我的问题:
- 如何实现 RapidMiner 记录所有第 3 方库输出?
- 为什么 RapidMiner 不记录安全违规?这对调查有很大帮助。
- 是否有机会绕过 RapidMiner 的所有安全限制,至少对于开发而言?
我会重新发布到 RapidMiner 社区(转到 Developer forum),因为开发人员会定期监控该频道。