我使用的是来自java.util.logging
的标准ConsoleHandler
,默认情况下,控制台输出被定向到错误流(即System.err
)。
如何将控制台输出更改为输出流(即System.out
)?
发布于 2011-01-20 02:09:10
我已经到了
SimpleFormatter fmt = new SimpleFormatter();
StreamHandler sh = new StreamHandler(System.out, fmt);
logger.addHandler(sh);
发布于 2011-03-19 04:38:08
嗯,我只是被咬了几次脚,试图完成这一壮举。在用谷歌搜索之前,我设法想出了下面的技巧。很难看,但它似乎能完成工作。
public class StdoutConsoleHandler extends ConsoleHandler {
protected void setOutputStream(OutputStream out) throws SecurityException {
super.setOutputStream(System.out); // kitten killed here :-(
}
}
注意:从构造函数调用setOutputStream()很诱人,但它确实(正如Jon Skeet已经指出的那样)关闭了System.err。疯狂的技能!
发布于 2008-10-11 23:49:13
我想出了一个办法。首先删除默认的控制台处理程序:
setUseParentHandlers(假);
然后在构造函数中创建ConsoleHandler的子类:
setOutputStream(System.out);
https://stackoverflow.com/questions/194165
复制相似问题