【发布时间】:2014-09-30 10:21:54
【问题描述】:
我们正在与第 3 方 API 集成,并购买了使用其 Java 库的许可(以面向对象的方式包装 API 调用)。
这个 Java 库的唯一问题是,如果 API 调用失败,它不会抛出异常或错误。我们从客户端获得的唯一指示是输出到 STDOUT(成功)或 STDERR(失败)。
因此,运行:
try {
com.the.third.party.java.lib.FizzBuzz.doSomething();
} catch(Throwable t) {
log.error(t);
}
...从来没有抓住任何东西。如果在 doSomething() 运行时发生错误,我们将简单地看到以下字符串打印到 STDERR:
Error: <details of the error here>
所以我想知道是否有办法监控 STDERR (System.err) 任何包含子字符串“Error:”的输出?由于流缓冲,这可能会变得有些复杂,所以我不确定正确的方法应该是什么。
【问题讨论】: