C# 配置文件中的节类型
我第一次使用log4net,但我不知道如何添加适当的配置设置。在app.config文件中添加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
节的所有文档都非常一致,但是为了正确编译,我不需要概述我的配置节吗
我现在有以下几点:
<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)中加载并构建了它,今天把它带回来,一切都正常了。不知道为什么。将您的输入标记为完整性的答案。谢谢你的帮助!