2016-02-24 4 views
0

В настоящее время мы работаем над добавлением журнала с использованием java.util.logging. Как и многие другие темы, мы установили уровни logger и handler: ALL, используя файл свойств. Вывод будет показывать сообщения журнала на этих уровнях журнала:Почему уровни java.util.logging: FINE, FINER и FINEST не работают?

  • CONFIG
  • INFO
  • WARNING
  • SEVERE

Но не регистрировать сообщения на следующих уровнях журнала:

  • FINE
  • FINER
  • FINEST

Вот наш конфигурационный файл:

#Level for the logger. 
.level= ALL 

#Controls the console handler 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 
java.util.logging.ConsoleHandler.level = ALL 

#Adjust this level to change which logging is output 
ca.fcl.wam.util.Logging.level = ALL 

каротажных отчетности добавлены следующее:

log.log(Level.FINEST, "Finest"); 
log.log(Level.FINER, "FINER"); 
log.log(Level.FINE, "FINE"); 
log.log(Level.CONFIG, "CONFIG"); 
log.log(Level.INFO, "INFO"); 
log.log(Level.WARNING, "WARNING"); 
log.log(Level.SEVERE, "SEVERE"); 
log.finest("Finest Log"); 
log.finer("Finer Log"); 
log.fine("Fine Log"); 
log.config("Config Log"); 
log.info("Info Log"); 
log.warning("Warning Log"); 
log.severe("Severe Log"); 

Наш журнал заканчивается как :

[2/24/16 14:16:41:691 CST] 0000005f Logging  C CONFIG 
[2/24/16 14:16:41:691 CST] 0000005f Logging  I INFO 
[2/24/16 14:16:41:691 CST] 0000005f Logging  W WARNING 
[2/24/16 14:16:41:691 CST] 0000005f Logging  E SEVERE 
[2/24/16 14:16:41:691 CST] 0000005f Logging  C Config Log 
[2/24/16 14:16:41:691 CST] 0000005f Logging  I Info Log 
[2/24/16 14:16:41:691 CST] 0000005f Logging  W Warning Log 
[2/24/16 14:16:41:691 CST] 0000005f Logging  E Severe Log 

Изменение уровней в файле конфигурации ведет себя правильно, если он не установлен: ALL, FINE, FINER или FINEST. В каждом из этих случаев.

+0

Я бы предположил, что ваша конфигурация не используется. Вам не хватает строки, которая привязывает обработчик к журналу, поэтому, если конфигурация используется, вы не должны видеть какой-либо вывод. Установите все в положение «ВЫКЛ», и если вы получите результат, вы знаете, что ваша конфигурация не используется. – jmehrens

+0

Что такое следующий параметр в вашем файле свойств и почему он есть: 'ca.fcl.wam.util.Logging.level = ALL'? –

+0

@jmehrens файл конфигурации определенно загружается. Если я отключу его, не покажут журналы, установив его на информацию, будет отображаться только информация, предупреждение и серьезность. Шон, это было добавлено, чтобы установить уровень отдельного регистратора, на всякий случай, когда мы закончили с кратным, который мы хотели установить отдельно. –

ответ

0

Включите код для вывода того, что было установлено всеми регистраторами после выполнения теста журнала.

public class DebugLogging { 

    private static final Logger log = Logger.getLogger("ca.fcl.wam.util.Logging"); 

    public static void main(String[] a) { 
     log.log(Level.FINEST, "Finest"); 
     log.log(Level.FINER, "FINER"); 
     log.log(Level.FINE, "FINE"); 
     log.log(Level.CONFIG, "CONFIG"); 
     log.log(Level.INFO, "INFO"); 
     log.log(Level.WARNING, "WARNING"); 
     log.log(Level.SEVERE, "SEVERE"); 
     log.finest("Finest Log"); 
     log.finer("Finer Log"); 
     log.fine("Fine Log"); 
     log.config("Config Log"); 
     log.info("Info Log"); 
     log.warning("Warning Log"); 
     log.severe("Severe Log"); 
     printConfig(); 
    } 

    private static void printConfig() { 
     LogManager lm = LogManager.getLogManager(); 
     synchronized (lm) { 
      Enumeration<String> e = lm.getLoggerNames(); 
      while (e.hasMoreElements()) { 
       Logger l = lm.getLogger(e.nextElement()); 
       if (l != null) { 
        print(l, System.err); 
       } 
      } 
     } 
    } 

    private static void print(Logger l, PrintStream ps) { 
     String scn = l.getClass().getSimpleName(); 
     ps.append("scn=").append(scn).append(", n=").append(l.getName()) 
       .append(", l=").append(String.valueOf(l.getLevel())) 
       .append(", fl=").println(l.getFilter()); 
     for (Handler h : l.getHandlers()) { 
      ps.append("\t").append(scn).append("->") 
        .append(h.getClass().getName()).append(", h=") 
        .append(String.valueOf(h.getLevel())).append(", fl=") 
        .append(String.valueOf(h.getFilter())); 
     } 
    } 
} 
0

Если это действительно весь ваш конфигурационный файл, то вам не хватает той части, где установлен обработчик:

handlers = java.util.logging.ConsoleHandler 
.level = FINE 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 
java.util.logging.ConsoleHandler.level = FINE 

работает для меня.

Смежные вопросы