Как указать Log4net на его файл конфигурации? - PullRequest
1 голос
/ 31 января 2012

Мы недавно перенесли все наши тесты с 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' не существует.at Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter..ctor (свойства NameValueCollection) --- Конец трассировки стека внутренней исключительной ситуации --- в System.RuntimeMethodHandle._InvokeConstructor (метод IRuntimeMethodInfo, аргументы Object [], ref сигнатура SignatureStruct, runTatTypeT)System.RuntimeMethodHandle.InvokeConstructor (метод IRuntimeMethodInfo, Object [] арг, SignatureStruct подписи, RuntimeType DeclaringType) при System.Reflection.RuntimeConstructorInfo.Invoke (BindingFlags invokeAttr, Binder связующего, Object [], параметры CultureInfo культуры) в System.RuntimeType.CreateInstanceImpl (BindingFlags bindingAttr, Binder Binder, Object [] args, CultureInfo culture, Object [] activAttributes) в System.Activator.CreateInstance (Тип тип, BindingFlags bindingAttr, Binder Binder, Object [] args, CultureInfo culture, Object [] активацииAttributes) в общем.Logging.LogManager.BuildLoggerFactoryAdapter () --- Конец трассировки стека внутренней исключительной ситуации --- в Common.Logging.LogManager.BuildLoggerFactoryAdapter () в Common.Logging.LogManager.get_Adapter () в Spring.Testing.Microsoft.AbstractSpringContextTests..ctor () в Spring.Testing.Microsoft.AbstractTransactionalDbProviderSpringContextTests..anyTaseTes.Sject.Tal.Stent.SteCon.TaseT.Sort.TaseT.Sort.TaseT.SteN.Text.SteCon.Text.SteN.T..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>

1 Ответ

1 голос
/ 31 января 2012

Вот фрагмент файла 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")))
...