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