Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Log4Net IConfigurationReader不工作_Log4net_App Config_Log4net Configuration - Fatal编程技术网

Log4Net IConfigurationReader不工作

Log4Net IConfigurationReader不工作,log4net,app-config,log4net-configuration,Log4net,App Config,Log4net Configuration,这是我的场景,我需要加载一个不同的app.config文件,其中包含我对log4net的设置。在我的项目中,我创建了一个从IConfigurationReader继承的类。对于Methode getSection,我加载配置文件并返回该节 我可以看到它正在加载配置文件和节,但它没有将其转换为我在配置文件中定义的类型 <common> <logging> <factoryAdapter type="Common.Logging.Log4Net.Log4NetLog

这是我的场景,我需要加载一个不同的app.config文件,其中包含我对log4net的设置。在我的项目中,我创建了一个从IConfigurationReader继承的类。对于Methode getSection,我加载配置文件并返回该节

我可以看到它正在加载配置文件和节,但它没有将其转换为我在配置文件中定义的类型

<common>
<logging>
  <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net4">
    <arg key="configType" value="FILE-WATCH"/>
    <arg key="configFile" value="C:\Users\dwarner\Documents\Visual Studio 2012\Projects\ConsoleApplication2\ConsoleApplication2\Config\log4net.config" />
  </factoryAdapter>
</logging>

我可以看到它加载了原始XML,但我不知道为什么它不会创建我的工厂适配器。我在配置中尝试了完全限定的名称,但没有成功


感谢您的帮助

只要您在LogManager上设置ConfigurationReader并将适配器设置为空,这样它就可以重新加载应该可以工作的配置设置。您还需要确保IConfigurationReader将节作为其自己的DocumentElement加载:

公共类CustomAppConfigurationReader:IConfigurationReader
{
公共对象GetSection(字符串sectionName)
{
var handler=new ConfigurationSectionHandler();
var xml=LoadConfigData().GetSection(sectionName).SectionInformation.GetRawXml();
var doc=新的XmlDocument();
doc.LoadXml(xml);
返回处理程序.Create(null,null,doc.DocumentElement);
}
/// 
///从自定义配置文件加载配置数据。
/// 
公共静态配置LoadConfigData()
{
var filePath=“C:\\someotheap.config”;
var map=new ExeConfigurationFileMap{ExeConfigFilename=filePath};
var config=ConfigurationManager.OpenMappedExeConfiguration(映射,ConfigurationUserLevel.None);
返回配置;
}
}