我有一个简单的设置来记录消息:Java 8 Update 65和Eclipse Mars:
import java.util.logging.Logger;
public class Example {
private final static Logger LOGGER = Logger.getLogger(Example.class.getName());
public static void main(String[] args) {
LOGGER.info("Test");
}
}
我期望能够在标准输出(stdout)上获得输出,就像使用System.out.println();
一样,但实际上它被打印在标准错误(stderr)上,这导致了Eclipse控制台上的红色字体:
我知道可以通过编写自定义的Handler
来更改此行为,但我想知道为什么默认输出显示在stderr而不是stdout上?
记录器应该使用stdout来记录fine
+info
级别,并使用stderr来记录severe
级别。
System.err
。可以看一下setOutPutStream
。更好的方法是:final class MigrationsCliConsoleHandler extends StreamHandler { MigrationsCliConsoleHandler() { setOutputStream(System.out); } @Override public void close() { flush(); } }
- Michael Simons