Ninject 2, ведение журнала и веб-формы - PullRequest
3 голосов
/ 27 февраля 2010

Официально выпущенный Ninject 2 больше не содержит ссылки на специфичные для WebForms функции для IoC для WebForms, MasterPages и т. Д. Теперь он разделен на плагины / расширения; который в этом случае является расширением http://github.com/idavis/ninject.web. Моя проблема, однако, заключается в том, что существует зависимость от log4net (или NLog), и я не могу найти никакой документации о том, как настроить его для интеграции с моей текущей конфигурацией log4net или для ее полного удаления (т.е. установите для ведения журнала значение null, поэтому возможно, две запущенные конфигурации log4net).

http://markmail.org/message/7iv7nltanz6ve4ga#query:Error%20activating%20ILoggerFactory%20ninject.web+page:1+mid:6o4q6ee2js2k4gfp+state:results ссылается на других с той же проблемой, но опять же, нет реальной документации о том, что с этим делать. Я просмотрел источник всего этого и, должно быть, упускаю что-то очевидное.

Может ли кто-нибудь указать мне правильное направление для наилучшего решения этой проблемы, чтобы я все еще мог легко интегрировать Ninject с WebForms, но при этом не запускать посторонние службы журналирования? Или не беспокойтесь о чем-то вроде следующего на Global.asax:

    protected override IKernel CreateKernel()
    {
        IKernel kernel =
        new StandardKernel(new SomeMyModule(), new Log4netModule());
        return kernel;
    }

В настоящее время я запускаю конфигурацию log4net в global.asax через

 private readonly static ILog Log = LogManager.GetLogger(typeof(Global));:

1 Ответ

3 голосов
/ 27 февраля 2010

Хотя Ninject.Web имеет свойства ILogger, он ничего не регистрирует.

Если вы хотите полностью отключить Ninject.Extensions.Logging, создайте и свяжите реализацию ILoggerFactory, которая возвращает ноль из всех методов.

Или, если вы хотите включить его с помощью log4net, выберите Ninject.Extensions.Logging из ninject.org и укажите ссылку на Ninject.Extensions.Logging.Log4net из вашего проекта. Он будет автоматически загружен Ninject 2.0.

Если вы создаете Ninject.Web из исходного кода, вы можете удалить расширение журнала:

  • удалить ссылку на эту сборку
  • удалить члена ILogger из 5 классов, у которых он есть
...