如何将Log4net指向其配置文件?

时间:2012-01-31 15:41:19

标签: log4net log4net-configuration

我们最近将所有测试从NUnit移至MsTest。我们使用Spring.NET作为IOC容器和Log4Net。尽管在测试项目中有Log4net,但Log4Net无法找到它。任何想法可能是什么?

以下是我们收到的错误:

  

无法创建类的实例   OurCompany.DataAccess.DocumentManagement.Tests.EmailVerificationTokensAdapterTests.DeleteTests。   错误:Common.Logging.ConfigurationException:无法创建   Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter类型的实例。   可能的解释是缺少零arg和单arg   NameValueCollection构造函数--->   System.Reflection.TargetInvocationException:抛出了异常   通过调用的目标。 --->   Common.Logging.ConfigurationException:log4net配置文件   'log4net.xml'不存在。在   Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter..ctor(NameValueCollection中   属性)   ---内部异常堆栈跟踪的结束---在System.RuntimeMethodHandle._InvokeConstructor(IRuntimeMethodInfo)   方法,Object [] args,ref SignatureStruct签名,RuntimeType   声明类型)   System.RuntimeMethodHandle.InvokeConstructor(IRuntimeMethodInfo   方法,Object [] args,SignatureStruct签名,RuntimeType   声明类型)   System.Reflection.RuntimeConstructorInfo.Invoke(的BindingFlags   invokeAttr,Binder binder,Object []参数,CultureInfo文化)   在System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr,   Binder binder,Object [] args,CultureInfo culture,Object []   在System.Activator.CreateInstance(Type类型,   BindingFlags bindingAttr,Binder binder,Object [] args,CultureInfo   culture,Object [] activationAttributes)at   Common.Logging.LogManager.BuildLoggerFactoryAdapter()   ---内部异常堆栈跟踪结束---在Common.Logging.LogManager.BuildLoggerFactoryAdapter()at   Common.Logging.LogManager.get_Adapter()at   Spring.Testing.Microsoft.AbstractSpringContextTests..ctor()at   Spring.Testing.Microsoft.AbstractTransactionalDbProviderSpringContextTests..ctor()   在   OurCompany.Tests.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>

1 个答案:

答案 0 :(得分: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")))