C# 配置文件中的节类型

C# 配置文件中的节类型,c#,xml,logging,log4net,config,C#,Xml,Logging,Log4net,Config,我第一次使用log4net,但我不知道如何添加适当的配置设置。在app.config文件中添加节的所有文档都非常一致,但是为了正确编译,我不需要概述我的配置节吗 我现在有以下几点: <configuration> <configSections> <section name="system.serviceModel"/> <section name="appSettings" type="System.Configuration.Co

我第一次使用log4net,但我不知道如何添加适当的配置设置。在app.config文件中添加
节的所有文档都非常一致,但是为了正确编译,我不需要概述我的
配置节吗

我现在有以下几点:

<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文档必须包含根级别的元素
  • 缺少所需的属性“type”(来自
    system.serviceModel
    startup
  • 找不到元素的架构信息*
    (*=log4net中的所有内容)
我已经读了一些关于分区组的帖子,并且考虑在一个单独的配置文件中设置
appSettings
log4net
。这对我来说有点过头了

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


如果我将所有内容都放在一个配置文件中,我如何知道节是什么类型?(我根据我用来获取设置的程序集猜测
appSettings
类型——我从包括它在内的许多帖子中获取了
log4net
的类型。)

删除
配置部分中关于
appSettings”,“system.serviceModel”,“startup”
的重复声明
它们已在框架安装的文件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>

....
.....
.....
....

还要确保配置文件以

开头,为什么要重新声明“system.serviceModel”、“appSettings”和“startup”?。它们已经在更高的级别(machine.config?)正确声明,通常您不需要在这里重新声明它们。在配置文件的开头,你有没有其他的内容?我同意Steve的观点,你唯一需要声明的配置部分是log4net。移除所有其他的,并确保
位于最顶端。如果出于某种奇怪的原因您必须声明它们,那么您必须指定它们的
type
属性。请尽可能地模仿这一点。我确实有xml头,尽管我在副本中遗漏了它。仍在获取以下错误:
XML文档必须包含根级别的元素
,并且未找到有关元素的所有消息。还注意到您的回复中没有包含
。那是故意的吗?不,只是我配置的复制/粘贴。没有启动。我建议尝试从配置中删除部分,并在错误消失时进行检查。也许你的档案里有什么地方出错了。顺便问一下,你有其他简单配置的项目可以正常工作吗?在我开始尝试添加log4net之前,一切都正常工作。所以我把所有的东西都注释掉了,除了以前的(
system.serviceModel
startup
),在
startup
上,我得到了
找不到所有东西的模式信息
。我把项目带回家,在VS2012(Windows 8)中加载并构建了它,今天把它带回来,一切都正常了。不知道为什么。将您的输入标记为完整性的答案。谢谢你的帮助!