Я столкнулся с проблемой реализации регистрации в моей библиотеке классов C#, которая является моделью домена. Моя главная цель - сохранить возможности ведения журнала как канонические и развязанные, насколько это возможно. Обычно протоколирование сообщений записывается в файлы и, возможно, выводит окно во время отладки.Внедрить функции ведения журнала с использованием событий в библиотеке классов C# - это хорошая практика?
В настоящее время я использую log4net, и я написал статический класс Logger
, который сам реализует методы ведения журнала. Итак, когда методы в объектах домена выполняются, они вызывают статические методы Logger.Log()
.
Хотя этого обертывания достаточно, чтобы успокоить мои соображения чистоты, интересно, было бы хорошей идеей реализовать все эти протокольные вызовы через события и полностью удалить данные о реализации журнала из библиотеки классов. Затем клиентский код будет дополнительно прослушивать их и извлекать полезную информацию из некоторого LogEventArgs
.
Так что вопрос:
событий на основе регистрации в целом, и в частности, в библиотеках классов, это хорошая идея или нет? И почему?
Спасибо за чтение.
Это мое мнение, но я думаю, что это оставит вас создать кучу ненужных событий в вашем коде, где единственным слушателем будет обработчик ведения журнала. Это кажется особенно трудным оправдать в моем сознании. Если вы действительно хотите СУБДАТЬ свой код, вы можете посмотреть на структуру AOP, такую как [PostSharp] (http://www.postsharp.net/), которая может добавить запись в ваш код, не делая ваши глаза кровоточащими. – Josh
@ Хорошо, я частично согласен, хотя я бы попытался инвестировать в «богатый LogEventArgs», так что у меня было бы очень мало или даже один «Logger.Log()» однострочный для журнала событий. (ну, может быть, это проще сказать, чем сделать ...) – heltonbiker
В качестве примечания: регистратор как статический класс делает ваш код сложнее проверить. – BartoszKP