配置文件中的节类型

本文关键字:类型 配置文件 | 更新日期: 2023-09-27 18:27:46

我第一次使用log4net,不知道如何添加适当的配置设置。关于向app.config文件中添加<log4net>部分,所有文档都非常一致,但为了使其正确编译,我不需要概述我的configSections吗?

我现在有以下内容:

<configuration>
  <configSections>
    <section name="system.serviceModel"/>
    <section name="appSettings" type="System.Configuration.ConfigurationManager"/>
    <section name="log4net"
       type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    <section name="startup" />
  </configSections>
  <system.serviceModel>
   ...
  </system.serviceModel>
  <appSettings>
   ...
  </appSettings>
  <log4net>
  ...
  </log4net>
  <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
</configuration>

但我收到以下错误:

  • XML document must contain a root level element
  • The required attribute 'type' is missing(来自system.serviceModelstartup
  • Could not find schema information for the element *(*=log4net中的所有内容)

我已经阅读了几篇关于节组的文章,并且考虑在一个单独的配置文件中设置appSettingslog4net。这有点让我不知所措。

我应该使用单独的配置文件吗?

如果我应该把所有东西都放在一个config文件中,我怎么知道一个节是什么类型的?(我猜测appSettings的类型是基于我用来获取设置的程序集——我从包括它在内的许多帖子中获得了log4net的类型。)

配置文件中的节类型

删除"appSettings", "system.serviceModel", "startup"configSections中的重复声明
它们已经在框架安装的文件machine.config中声明,该文件位于C:''WINDOWS''Microsoft.Net 的相应子文件夹中

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4Net" />
  </configSections>
  <appSettings>
     ....
  </appSettings>
  <log4net>
    <root>
       .....
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
       .....
    </appender>
  </log4net>
  <system.serviceModel>
      ....
  </system.serviceModel>
</configuration>

还要确保您的配置文件以<?xml version="1.0"?> 开头