Элегантный способ записывать действия? - PullRequest
2 голосов
/ 04 января 2011

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

  1. Использовать шаблон шаблона.
  2. Использовать AOP.
  3. Использование слушателя и событий.
  4. Используйте комбинацию вышеперечисленного.
  5. Что-то еще (объясните).

Ответы [ 4 ]

6 голосов
/ 04 января 2011

Я бы проголосовал за АОП ради устранения избыточности, но только если в вашем проекте есть место для АОП.Вы можете настраивать ведение журнала, используя библиотеку журналов из ваших методов в другом месте вашего проекта, но в конкретном компоненте, где вы храните много похожих классов и хотите записывать похожие вещи для всех них, может быть болезненно копировать / вставлять и проверятьвсе знают, как вести журнал.

РЕДАКТИРОВАТЬ: что касается других перечисленных подходов, я думаю, что преимущество АОП состоит в том, что он не требует разработки кода (методов или событий шаблона) специально для этой темы.Обычно вы не теряете гибкость кода, обнаруживая сквозные проблемы и рассматривая их как таковые, в отличие от перестройки всей иерархии классов просто для того, чтобы использовать согласованное ведение журнала.

2 голосов
/ 04 января 2011

Это действительно будет зависеть от вашего конкретного контекста.В частности, о том, что отслеживалось и как приложение в настоящее время работает.Если действия - это классы, у которых все есть общий базовый класс, и все, что вас волнует, это имя действия, то простое дополнение для входа в этот класс будет отличным выбором.Если у вас есть действия, распределенные по нескольким слоям кода, то решение типа AOP или Listener / Event может работать лучше.Если это приложение было веб-приложением по сравнению с рабочим столом или если вам, в конечном счете, необходим фид логов в базу данных, веб-сервис или просто хотите, чтобы текстовые файлы имели значение.

2 голосов
/ 04 января 2011

Я думаю, что лучший ответ - использовать log4j (или sli4j, если это последний) внутри аспекта.

Ведение журнала - это «привет мир» АОП. Если вы не используете AOP, вы делаете это неправильно.

1 голос
/ 04 января 2011

Если вы просто хотите регистрировать определенные действия, возможно, проще всего использовать logi api , такой как commons-logging или log4j и т. Д., Добавьте оператор log в код, который вы хотите отслеживать.

...