美文网首页
java内置Logger无法打印info级别以下日志

java内置Logger无法打印info级别以下日志

作者: Demon_aac4 | 来源:发表于2017-12-20 15:55 被阅读0次
    package com.demon.test.testlogger;
    
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    public class TestLevel {
        public static void main(String[] args) {
            Logger logger = Logger.getGlobal();
            logger.setLevel(Level.ALL);
            logger.log(Level.FINEST, "FINEST");
            logger.log(Level.FINER, "FINER");
            logger.log(Level.FINE, "FINE");
            logger.log(Level.CONFIG, "CONFIG");
            logger.log(Level.INFO, "INFO");
            logger.log(Level.WARNING, "WARNING");
            logger.log(Level.SEVERE, "SEVERE");
        }
    }
    
    

    执行以上代码,我们的预期是在控制台打印以下信息

    十二月 20, 2017 3:19:48 下午 com.demon.test.testlogger.TestLevel main
    非常详细: FINEST
    十二月 20, 2017 3:19:48 下午 com.demon.test.testlogger.TestLevel main
    较详细: FINER
    十二月 20, 2017 3:19:48 下午 com.demon.test.testlogger.TestLevel main
    详细: FINE
    十二月 20, 2017 3:19:48 下午 com.demon.test.testlogger.TestLevel main
    配置: CONFIG
    十二月 20, 2017 3:19:48 下午 com.demon.test.testlogger.TestLevel main
    信息: INFO
    十二月 20, 2017 3:19:48 下午 com.demon.test.testlogger.TestLevel main
    警告: WARNING
    十二月 20, 2017 3:19:48 下午 com.demon.test.testlogger.TestLevel main
    严重: SEVERE
    

    但是实际上在控制台打印结果是:

    十二月 20, 2017 3:19:48 下午 com.demon.test.testlogger.TestLevel main
    信息: INFO
    十二月 20, 2017 3:19:48 下午 com.demon.test.testlogger.TestLevel main
    警告: WARNING
    十二月 20, 2017 3:19:48 下午 com.demon.test.testlogger.TestLevel main
    严重: SEVERE
    

    出现这种原因是因为 java.util.logging.Logger默认读取的配置文件 jre\lib\logging.properties 默认配置一个java.util.logging.ConsoleHandler,级别为INFO

    #java.util.logging.ConsoleHandler.level = INFO
    #java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
    

    把这个配置注释掉之后,自定义一个 java.util.logging.ConsoleHandler,就可以在控制台里面为所欲为了。

    如果不注释掉系统默认的 ConsoleHandler ,自定义一个ConsoleHandler 的时候,效果相当于有两个ConsoleHandler ,INFO级别以上的日志会在控制台打印两次。

    Java内置Logger相关可以看这篇文章: Java内置Logger详解

    相关文章

      网友评论

          本文标题:java内置Logger无法打印info级别以下日志

          本文链接:https://www.haomeiwen.com/subject/wemgwxtx.html