Я использую замок в Виндзоре, и он отлично работает. У меня есть установщик, который регистрирует перехватчик, а также средство для подключения к событиям, чтобы я мог сохранить большую часть моего кода, блаженно не осознавая как Castle, так и log4net.Могу ли я использовать объект Castle Logging на этапе регистрации?
Большая часть моей регистрации происходит в коде, но для протоколирования я закреплять его в web.config (который устанавливает первый), как это:
<castle>
<facilities>
<facility id="logging"
type="Castle.Facilities.Logging.LoggingFacility, Castle.Facilities.Logging" loggingApi="log4net" />
</facilities>
<installers>
<install type="MyProject.LoggerInstaller,MyProject" />
</installers>
</castle>
Причина заключается в том, что у меня нет чтобы включить этот раздел конфигурации, когда я иду на производство. Это также означает, что я могу очень легко переключиться с log4net на nlog на все, что захочет на лету. И означает, что ни один из моих компонентов не должен напрямую ссылаться на log4net.
Проблема, с которой я сталкиваюсь, заключается в том, что я хотел бы использовать некоторые протоколирования во время самой фазы регистрации. Я делаю это, потому что регистрация немного сложна, и я хочу быть в состоянии легко следить за тем, что происходит и как долго это происходит. (В основном потому, что у меня есть система типа плагина.)
В моем LoggerInstaller Я пытаюсь разрешить ILoggerFactory, чтобы я мог создать регистратор и связать некоторые события для него в моем служебном объекте. Но это не удается с этим:
ComponentNotFoundException: No component for supporting the service Castle.Core.Logging.ILoggerFactory was found
От рыть вокруг источника замка я думаю, которые установлены все монтажники перед любыми удобствами, так что кажется, что объект не был инициализирован в мой инсталлятор. Если я создаю 2-й установщик только для того, чтобы подключить события, чтобы он не выполнялся через конфигурацию XML, тогда он работает, но я хотел бы, чтобы все связанные журналы были связаны друг с другом - и нет смысла подключать события, если регистрация не является Доступен. (И мне нужно как-то выяснить, включено ли ведение журнала ..?)
В идеале я хотел бы зарегистрировать объект Castle Logging у моего установщика, но я не знаю, как завершить его настраиваемые элементы. (Или хочу ли я.)
Есть ли более простой способ? Я подозреваю, что я не делаю то, что обычно является отличной идеей, поскольку я знаю, что я не должен действительно разрешать на этапе регистрации. Но я считаю, что установка достаточно сложная, чтобы гарантировать небольшую регистрацию.
Неужели кто-то еще делал это раньше? Любая помощь (или руководство на более праведный путь!) Была бы высоко оценена.
Спасибо! Сегодня утром я попытался это сделать, и он отлично работает! – John