我试图拦截System.out和System.err,但保持在必要时直接写入原始流的能力.
PrintStream ps = System.out;
System.setOut(new MyMagicPrintStream());
ps.println("foo");
Run Code Online (Sandbox Code Playgroud)
不幸的是,System类实现的细节意味着在我的例子中,"foo"被发送到真正的stdout的MyMagicPrintStream instread.有谁知道如何获得真实/原始OutputStreams的引用.
谢谢!
PS:否则会导致StackOverflowError < - 用于SEO.
fqs*_*sxr 29
试试这个:
PrintStream ps = new PrintStream(new FileOutputStream(FileDescriptor.out))
Run Code Online (Sandbox Code Playgroud)
Rea*_*wTo 13
尝试这样的事情:
PrintStream original = new PrintStream(System.out);
// replace the System.out, here I redirect to NUL
System.setOut(new PrintStream(new FileOutputStream("NUL:")));
System.out.println("bar"); // no output
// the original stream is still available
original.println("foo"); // output to stdout
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20260 次 |
| 最近记录: |