java.util.logging.Logger doesn't respect java.util.logging.Level?

前端 未结 6 1606
被撕碎了的回忆
被撕碎了的回忆 2020-12-02 18:14

In plain Java SE 6 environment:

Logger l = Logger.getLogger(\"nameless\");
l.setLevel(Level.ALL);
l.fine(\"somemessage\");

Nothing shows up

6条回答
  •  误落风尘
    2020-12-02 19:01

    Other users have already given good answer why it happened (ConsoleHandler has a separate level variable). I reuse my application logger's level and copy it up to the parent hiearchy. Also provides easy way to refresh levels at runtime anytime I want.

    // Set same level all loggers and handlers up to the parent level
    // OFF,SEVERE,WARNING,INFO,CONFIG,FINE,FINER,FINEST,ALL
    Logger logger = Logger.getLogger(this.getClass().getPackage().getName());
    //Level level = Level.parse("FINEST");
    Level level = logger.getLevel();
    Logger tempLogger = logger;
    while(tempLogger != null) {
       tempLogger.setLevel(level);
       for(Handler handler : tempLogger.getHandlers())
          handler.setLevel(level);
       tempLogger = tempLogger.getParent();
    }
    

提交回复
热议问题