Каковы варианты использования для лесозаготовки Castle Windsor? - PullRequest
1 голос
/ 13 февраля 2012

Недавно я узнал об инверсии управления через внедрение зависимостей и использовании Castle Windsor.Мне это нравится.Я понялЛампочка над моей головой ярко горит.Но меня беспокоит вопрос о средствах регистрации и интерфейсе ILogger.Что это на самом деле делает там?Это для меня или только для самого Виндзора?

Поскольку ILogger предназначен для отвода различий между log4net и Nlog и любыми другими поддерживаемыми им структурами журналирования, он должен представлять наименьший общий знаменатель между ними.,Различные рамки похожи, но не обязательно идентичны.Если бы в одной из них была какая-то фантастическая функция, но не в другой, ее либо нужно было бы исключить из ILogger, либо реализации ILogger для других каркасов журналирования должны иметь ее неоперативные реализации,или что-то еще, что не очень удовлетворяет.

Задолго до Виндзора я был поклонником log4net, и многие из моих любимых библиотек используют его, например, NHibernate.Поэтому, если я создаю новое приложение, я буду использовать log4net.Я готов взять на себя обязательство, и я считаю, что это стабильная зависимость - такая же стабильная зависимость, как, например, необходимость System.Web.Я бы не написал свои компоненты для использования ILogger, я бы написал их для использования ILog.Но у меня складывается впечатление, что Виндзор ожидает, что я буду использовать ILogger для своей собственной регистрации.Разве это не обременяет мой проект зависимостью от Виндзора, когда у меня не должно быть никакой зависимости от моего контейнера IoC?

Я вижу точку Виндзора, имеющую возможность ведения журнала, чтобы он мог регистрировать свои собственные операции, используякакую бы логику не использовал проект.Это кажется совершенно разумным.Но если я не использую ILogger для своего собственного кода и просто перейду прямо к log4net ILog, что я откажусь?Буду ли я сожалеть об этом?

Очевидный ответ заключается в том, что я мог бы захотеть изменить каркасы журналов через шесть месяцев.Но я не буду.log4net зрелый и стабильный.Это проект с ограниченной и очень четко определенной областью применения, который он реализует почти идеально.Это можно считать «законченным».Самое большее, мне может понадобиться написать собственный appender для обработки сообщений.(Может быть, я хочу написать их на открытку и по какой-то причине бросить их в почту.) Но это легко сделать в рамках log4net, и я бы использовал его, как любой другой app4 log4net.Я бы с большей вероятностью мог изменить каркасы журналирования, чем я мог бы изменить веб-платформы.

1 Ответ

0 голосов
/ 14 февраля 2012

Кажется, вы уже решили использовать log4net напрямую. Это вполне разумно, так как вы считаете, что это стабильная зависимость. Я только что переключился с log4net на NLog для наших проектов, так что случается так, что вы можете изменить каркасы журналирования в будущем, где абстракция имеет свои преимущества.

Еще одним соображением при рассмотрении вопроса об использовании абстракции ведения журнала (кроме потери функциональности, специфичной для конкретной среды ведения журнала), является дополнительная нагрузка на изучение абстракции. Делает ли это код более или менее сложным для разработчиков?

В нашем случае мы обнаружили, что NLog был настолько прост в установке и настройке напрямую, что решили потерять нашу пользовательскую абстракцию ведения журнала и перейти от log4net (который мы нашли немного многословным в своей xml-конфигурации по сравнению с NLog).

...