【问题标题】:Log4Net IConfigurationReader not workingLog4Net IConfigurationReader 不工作
【发布时间】:2013-12-16 20:51:11
【问题描述】:

这是我的场景,我需要加载一个不同的 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,但我不知道为什么它不会创建我的工厂适配器。我在配置中尝试了完全限定名称,但没有成功。

感谢您的帮助

【问题讨论】:

    标签: log4net app-config log4net-configuration


    【解决方案1】:

    只要您在 LogManager 上设置 ConfigurationReader 并将 Adapter 设置为空,以便它重新加载配置设置,它应该可以工作。您还需要确保您的 IConfigurationReader 将部分加载为它自己的 DocumentElement:

    public class CustomAppConfigurationReader : IConfigurationReader
    {
        public object GetSection(string sectionName)
        {
            var handler = new ConfigurationSectionHandler();
            var xml = LoadConfigData().GetSection(sectionName).SectionInformation.GetRawXml();
            var doc = new XmlDocument();
            doc.LoadXml(xml);
            return handler.Create(null, null, doc.DocumentElement);
    
        }
    
        /// <summary>
        /// Load configuration data from custom configuration file.
        /// </summary>
        public static Configuration LoadConfigData()
        {
            var filePath = "C:\\SomeOtheApp.config";
            var map = new ExeConfigurationFileMap {ExeConfigFilename = filePath};
            var config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
            return config;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      相关资源
      最近更新 更多