2009-12-29 3 views
1

Кто-то может кричать на меня, чтобы прочитать faqqing FAQ, но я в спешке ...Как установить javax лесоруб ручку, чтобы быть Refactor чувствительного

Кто-нибудь есть способ сделать javax или log4j регистратор рефакторинга , чувствительные?

Поговаривают, что в настоящее время utils.Something имеет лесоруба ручку:

final static private Logger logger = Logger.getLogger(Something.class.getName()); 

И logging.properties имеет

.level = warning 
utils.Something.level=info 

Затем с помощью Eclipse, чтобы реорганизовать Что-то nutilla.Somewhere

В результате мой регистратор свойство handle и logger перестают синхронизироваться.

Возможно, программно задайте уровни регистрации?

Кто-нибудь потрудился сделать это, и было ли это стоило проблемы?

Разъяснение: После рефакторинга utils.Something к nutilla.Somewhere, регистратор обрабатывать теперь было войти только предупреждение, а не информацию, из-за записи в logging.properties файле. Итак, вопрос в том, есть ли способ заменить функцию logging.properties файла программными средствами, и если да, то стоит ли это беспокоиться?

Причина и мотивация на вопрос

Я упряма в не слушает, когда советовал мне, чтобы избежать рефакторинга, потому что ... Рефакторинга постоянной моей привычки. Я создаю классы по часам, объединяя их, удаляю их, извлекаю методы и т. Д. Я создаю неутомимый класс, который не находит времени на то, чтобы изначально разместить класс. Мне не нравится сидеть, тратя время на то, чтобы понять, где их разместить поначалу - поэтому я просто помещаю их в наиболее удобное пространство имен пакетов.

После создания хорошего количества класса/структуры интерфейса мне становится очевидным, что некоторые классы, интерфейсы или методы shd были тогда, когда все операции рефакторинга происходят и ... тада ... вот когда я регистрирую. Файл свойств разрушен сотней строк.

ответ

1

Если вы настраиваете ведение журнала с использованием имен классов (в отличие от пакетов), проверка «Обновить полностью квалифицированные имена классов в текстовых файлах, отличных от Java» в диалоговом окне рефакторинга переименования eclipse должна делать трюк.

0

я бы не использовать его (я думаю, что это имеет смысл быть осторожными, когда рефакторинга), но здесь он идет:

private static Logger logger = Logger.getLogger(new Exception().getStackTrace()[0].getClassName()); 
+0

У вас будет каждый регистратор, который скажет вам, что это загрузчик классов? – rsp

+1

@rsp - попробуйте запустить код. а затем помните, что стоп-трасса обращена, поэтому в позиции 0 есть внутренний самый кадр. – diciu

+0

Ввод регистратора в нестатическое поле и использование Logger.getLogger (getClass(). GetName()) может показать ваше намерение лучше ... – meriton

1

Я не думаю, что есть выход из коробки, которая обновлена имена пакетов и имена классов в вашем файле свойств в результате действий рефакторинга.

Вы можете:

  • обновления файла свойства вручную, когда рефакторинг выполняются (рефакторинг должен быть действие, которое не предпринимается eveery недели: =)
  • использовать фиксированные строки для создания лесорубов (сделать регистрацию более функциональный, а не физическая)
  • загрузки файла свойств и настроить имена свойств на основе констант вы объявляете в классе Перед инициализацией log4j с этой коллекцией свойств

Я бы выбрал для себя первый вариант, слишком много автоматического поведения может привести вас в очень непрозрачную ситуацию.

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