Недавно я узнал об инверсии управления через внедрение зависимостей и использовании 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.Я бы с большей вероятностью мог изменить каркасы журналирования, чем я мог бы изменить веб-платформы.