Используйте Java-аннотацию, чтобы не запускать метод - PullRequest
2 голосов
/ 28 марта 2010

У меня в классе есть метод только для тестирования:

private void printOut(String msg, Object value)
{
    System.out.println(msg + value);
}

Это метод-оболочка для System.out.println ();

Так что я надеюсь, что с использованием аннотации я могу не запускать этот метод во время продуктивной среды, сохраняя при этом готовность этих диагностических выходных данных, если я хочу вернуться к среде отладки.

Какую аннотацию я должен поставить поверх названия метода?

Ответы [ 3 ]

11 голосов
/ 28 марта 2010

Как я уже говорил выше, вы должны использовать протоколирование. Вот некоторые из преимуществ использования входа в приложение:

  • Ведение журнала может генерировать подробную информацию о работе приложения.
  • После добавления в приложение регистрация не требует вмешательства человека.
  • Журналы приложений могут быть сохранены и изучены позднее.
  • Если журналы приложений достаточно подробные и правильно отформатированы, они могут предоставить контрольные журналы.
  • За счет регистрации ошибок, которые могут не сообщаться пользователям, регистрация может помочь персоналу службы поддержки в устранении неполадок.
  • За счет сбора очень подробных и заданных программистом сообщений регистрация может помочь программистам в отладке.
  • Ведение журнала может быть средством отладки, когда отладчики недоступны, что часто бывает в многопоточных или распределенных приложениях.
  • Ведение журнала остается в приложении и может использоваться в любое время при запуске приложения.

Подробнее о регистрации здесь

В Java много фреймворков логирования:

  1. Log4j
  2. java.util.logging
  3. Logback .

И несколько фасадов, обеспечивающих абстракцию для различных каркасов:

  1. SLF4J
  2. Обще-каротаж
8 голосов
/ 28 марта 2010

Одним из решений является использование AspectJ для этого, поскольку вы можете управлять поведением на основе аннотаций.

Вот учебник о том, как использовать аннотации в качестве точек соединения:

http://www.eclipse.org/aspectj//doc/next/adk15notebook/annotations-pointcuts-and-advice.html

То, что вы могли бы сделать, это иметь:

@DebugMessage
private void printOut(String msg, Object value)
{ }

Тогда, в вашем аспекте, вы могли бы сделать так, чтобы этот звонок println.

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

3 голосов
/ 28 марта 2010

Вы должны действительно следовать совету Утарка и использовать каркас ведения журнала.

Они были специально разработаны для этой ситуации.

Выполнение чего-то «в стиле фанк», вероятно, вызовет проблемы позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...