我有以下代码:
private void replaceStdIo(SocketChannel socketChannel) throws IOException {
socketChannel.configureBlocking(blockingMode);
InputStream in = new RedirectorInputStream();
PrintStream out = new PrintStream(new RedirectorOutputStream(), false, charsetEncoding);
System.setIn(in);
System.setErr(out);
System.setOut(out);
}
它是一个更大的Telnet类的一部分,我用它来从我的服务器中获取Info。目前的问题是我有一个记录器。我想将记录器的所有内容输出到Telnet控制台,但只有System.out.print可以正常工作。 System.err也应该可以工作,但由于某些原因它不是吗?
这是IDE中的控制台输出:
14:06:42:0723.: From ConsoleIn.java -> Found the Commandinput FINEST in
setDebugLevel(FINEST)
14:06:42:0725.: From Debug.java -> Set debugLevel to FINEST
但这不会在PC上的Telnet控制台中打印出来,只有System.out中的所有内容都打印出来。有谁知道为什么?
答案 0 :(得分:0)
我通过创建一个新的Handler修复了我的问题。事实证明,旧的consoleHandler阻止了对System.err的拦截。通过创建我自己的新Handler并取出consoleHandler,它最终工作了。
新的,有效的代码:
var longestNumber = arr[i];
if(arr[i] > longestNumber){