2016-10-21 4 views
0

Я хочу регистрировать все с помощью JUL и настроить FileHandler для записи всего в файл журнала, однако он регистрирует только контент, который находится в том же классе, что и FileHandler. Как установить FileHandler global без использования файла конфигурации?Набор протоколов Java Util FileHandler global

ответ

0

Вы можете пройти родителей регистратора, удалить любые другие обработчики вашей находки и вызвать logger.setUserParentHandlers (true), пока logger.getParent() не возвращает значение null. Это говорит вам, что вы нашли экземпляр корневого регистратора, на котором вы вызываете logger.addHandler (myOwnHandler). Вы также можете вызвать logger.setLevel (...) для каждого регистратора, чтобы убедиться, что ваш обработчик видит всю активность ведения журнала. Вот пример кода:

private static final Logger LOGGER = Logger.getLogger(MyMainClass.class.getName()); 

static { 
    Logger logger = LOGGER.getParent(); 
    while(logger != null) { 
     Handler[] handlers = logger.getHandlers(); 
     if(handlers != null) { 
      for(Handler handler : handlers) { 
       logger.removeHandler(handler); 
      } 
     } 

     if(logger.getParent() == null) { 
      logger.addHandler(SystemErrHandler.newInstance()); 
     } 
     else { 
      logger.setUseParentHandlers(true); 
     } 

     if(logger.getName().startsWith("my.sample.package")) { 
      logger.setLevel(Level.ALL); 
     } 
     logger = logger.getParent(); 
    } 
} 
Смежные вопросы