0

有没有办法让我截取从外部 JAR 文件中使用的 STDERR 流?

我的情况是我有自己的程序,将 STDERR 用于 XYZ,还有一个外部 JAR,将 STDERR 用于 ABC。我想将两者合并,以便为最终用户正确格式化,但我无法弄清楚如何捕获重定向或(正确的术语是什么?)JAR 的 STDERR?

谢谢,

4

2 回答 2

2

java程序中的标准错误流是System.err,标准输出流是System.out.

您可以使用System.setErr(java.io.PrintStream)和 System.setOut 将它们覆盖到 PrintStream 对象。但这将在全球范围内被替换。提供一个 PrintStream 的实现,它将进行格式化并将其设置为两者的标准错误流。

如果您有两个不同的进程,那么您可以获得另一个进程的错误流(作为输入流)从中读取内容(fromat)并将其写入标准错误流。

于 2010-08-08T18:13:37.907 回答
0

这不是一个简单的解决方案,但您可以创建一个类加载器、java 代理或预处理器来修改所选类的字节码并替换对静态字段 System.err 的所有引用以访问您的自定义输出流。

于 2010-08-08T22:12:25.193 回答