Java JDK自带Logger,无法打印INFO级以下消息
最近学习Java基础知识的时候看到JDK自带的日志类Logger,其有一系列方法例如Logger.info,Logger.fine等方法可以产生对应等级的日志消息,默认的处理器会在控制台上打印出该消息。
我们知道Logger默认是不会处理INFO等级以下的消息的,所以我使用了Logger.setLevel(Level.ALL)方法修改配置等级。
但在调用了Logger.fine后还是无法在控制台打印出(这的打印是默认处理),这是因为我们只是修改了管理器的等级,消息确实被接收了,但在日志控制器那里并没有进行处理(这里的处理为打印在控制台)
所以我们需要再添加一个新的控制器给我们的Logger类
Logger myLogger = Logger.getLogger("com.ynd.mainTest");
myLogger.setLevel(Level.ALL);
ConsoleHandler myConsoleHandler = new ConsoleHandler();
myConsoleHandler.setLevel(Level.FINER);
myLogger.addHandler(myConsoleHandler);
//这里关闭父处理器,否则会传递给父处理器,在控制台上打印两次
myLogger.setUseParentHandlers(false);
myLogger.info("main start");
myLogger.finer("finer test");