Я использую log4net в MSMQ-службе WCF, размещенной в IIS 7. Я использую Ninject для внедрения зависимостей и установил Ninject.Extensions.Wcf , Ninject.Extensions.Logging.log4net Пакеты NuGet и добавленный раздел конфигурации log4net в файл Web.config.
Я видел, как люди предлагали добавить код инициализации log4net в Global.asax, но, насколько я могу судить, это не работает для сервисов, активированных MSMQ. Однако Ninject устанавливает пакет WebActivator , который позволяет запускать код инициализации при запуске веб-приложения. Ninject помещает свой собственный код в App_Start \ NinjectWebCommon.cs . Для настройки log4net необходимо добавить код в метод Start. Моя выглядит так:
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
// configure log4net
XmlConfigurator.Configure();
bootstrapper.Initialize(CreateKernel);
}