我第一次使用log4net,我无法弄清楚如何添加适当的配置设置。所有文档都非常一致地将<log4net>
部分添加到 app.config 文件中,但为了正确编译,我不需要概述我的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.serviceModel
和startup
)Could not find schema information for the element *
(* = log4net中的所有内容)我在部分组上阅读了几篇帖子,我考虑在单独的配置文件中设置appSettings
和log4net
。这有点过头了。
我应该使用单独的 config 文件吗?
如果我将所有内容放在一个 config 文件中,我怎么知道一个部分是什么类型的? (我猜测基于我用来获取设置的程序集的appSettings
类型 - 我从许多帖子中得到了log4net
的类型,包括它。)
答案 0 :(得分:1)
删除"appSettings", "system.serviceModel", "startup"
的 configSections 中的重复声明
它们已在Framework安装的文件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"?>