在Java中,有没有办法在每次将某些内容写入stderr时获取回调?
我希望在将任何内容写入 stderr 时运行我自己的 java 代码,但似乎无法找到一种通用的方法。目标是接收回调或覆盖打印到错误控制台的内容,也许在任何时候写入错误的地方,例如使用 log 的错误函数或 Exception 的 printStackTrace,我的代码将能够拦截文本。这在 Java 中怎么可能?
回答
您可以调用System.setErr(PrintStream err)并将其设置为执行您喜欢的任何操作的 PrintStream。Throwable在打印其堆栈跟踪时将使用 System.err,因此您的 PrintStream 将被使用。