Как указать Log4net на его файл конфигурации?

Недавно мы переместили все наши тесты из NUnit в MsTest. Мы используем Spring.NET для контейнера IOC и Log4Net. Log4Net не может найти файл log4net.xml, несмотря на его наличие в тестовом проекте. Есть идеи что это может быть?

Вот ошибка, которую мы получаем:

Не удалось создать экземпляр класса OurCompany.DataAccess.DocumentManagement.Tests.EmailVerificationTokensAdapterTests.DeleteTests. Ошибка: Common.Logging.ConfigurationException: невозможно создать экземпляр типа Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter. Возможное объяснение - отсутствие конструкторов с нулевым аргументом и одним аргументом NameValueCollection ---> System.Reflection.TargetInvocationException: цель вызова сгенерировала исключение. ---> Common.Logging.ConfigurationException: файл конфигурации log4net 'log4net.xml' не существует. в Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter..ctor (свойства NameValueCollection) --- Конец внутренней трассировки стека исключений --- в System.RuntimeMethodHandle._InvokeConstructor (метод IRuntimeMethodInfo, аргументы Object [], ссылка SignatureStruct подписи, объявление RuntimeType System. BindingFlags bindingAttr, Binder binder, Object [] args, CultureInfo culture, Object [] activateAttributes) в System.Activator.CreateInstance (Type type, BindingFlags bindingAttr, Binder binder, Object [] args, CultureInfo culture, Object [] activateAttributes) в общем .Logging.LogManager.BuildLoggerFactoryAdapter () --- Конец трассировки стека внутреннего исключения --- в Common.Logging.LogManager.BuildLoggerFactoryAdapter () в Common.Logging.LogManager.get_Adapter () в Spring.Testing.Microsoft.AbstractSpringContextTests..ctor () в Spring.Testing.Microsoft.AbstractTransactionalDbPtextTestSpring. Common.Domain.SATransactionalIntegrationTestsBase..ctor () в SATransactionalIntegrationTestsBase.cs: строка 19 в OurCompany.DataAccess.DocumentManagement.Tests.EmailVerificationTokensAdapterTests.DeleteTests..ctor () в DeleteTests.cs: строка 20

Вот что у нас есть в файле конфигурации:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="common">
            <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
        </sectionGroup>
    </configSections>

    <common>
        <logging>
            <factoryAdapter type="Common.Logging.Simple.TraceLoggerFactoryAdapter, Common.Logging">
                <arg key="level" value="All" />
                <arg key="showLogName" value="true" />
                <arg key="showDataTime" value="true" />
                <arg key="dateTimeFormat" value="yyyy/MM/dd HH:mm:ss:fff" />
            </factoryAdapter>
        </logging>
    </common>
</configuration>

person Greg Finzer    schedule 31.01.2012    source источник


Ответы (1)


Вот фрагмент web.config файла, вот шаги: Вы можете добавить ключ в appSettings, который указывает на внешний файл конфигурации, содержащий все настройки Log4net:

 <appSettings>
      <add key="log4net.Config" value="Configs\develop.config" />
  </appSettings>

Вот внешний файл конфигурации:

<log4net>
  <root>
        <appender-ref ref="LogFileAppender" />
  </root>
  ...
</log4net>

В вашем коде вы установите XmlConfigurator:

Config.XmlConfigurator.Configure(New FileInfo(ConfigurationManager.AppSettings("log4net.Config")))
person Giorgio Minardi    schedule 31.01.2012