c# - 为什么在配置文件中无法识别 log4net?

标签 c# log4net

我使用 C# 使用 log4net 编写了一个测试控制台应用程序:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using log4net;
using log4net.Config;

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

namespace Log4Net_Test
{
    class Program
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(Program));

        static void Main(string[] args)
        {    
            log.Info("Entering application");    
            log.Debug("Debug message");    
            log.Info("Leaving application");
        }
    }
}

我的 App.config 文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
  </appSettings>
  <log4net>
    <!-- A1 is set to be a ConsoleAppender -->
    <appender name="A1" type="log4net.Appender.FileAppender">
      <file value="logfile.txt" />
      <appendToFile value="false" />

      <!-- A1 uses PatternLayout -->
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message%newline" />
      </layout>
    </appender>

    <!-- Set root logger level to DEBUG and its only appender to A1 -->
    <root>
      <level value="DEBUG" />
      <appender-ref ref="A1" />
    </root>
  </log4net>
</configuration>

执行测试程序会出现以下错误消息:

log4net:ERROR Exception while reading ConfigurationSettings. Check your .config
file is well formed XML.
System.Configuration.ConfigurationErrorsException: Configuration system failed t
o initialize ---> System.Configuration.ConfigurationErrorsException: Unrecognize
d configuration section log4net. 

我的配置文件有什么问题?

更新 1: 正如已接受的答案中所指出的,configSections' 部分丢失了。但是我还必须删除startup部分,否则会出现同样的错误。我不知道为什么 startup` 部分也会导致问题。也许更有经验的人可以说说并写评论。

最佳答案

您还需要在部分 block 中添加 log4net

<configSections>

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> 

</configSections>

关于c# - 为什么在配置文件中无法识别 log4net?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17106682/

相关文章:

c# - 通过 visualState 触发器更改 WrapGrid 的 maximumRowsOrColums 值不起作用

c# - 比较两个表的 ID ASP.Net MVC

c# - 使用相同的 ViewModel 打开两个窗口时无法设置单选按钮值

XmlHierarchyConfigurator 出现 Log4net 错误。缺少过滤器属性

c# - 在 log4net 中格式化自定义属性

c# - RollingFileAppender 中的先前文件名

log4net - 如何配置 log4net 以在 CRM 2011 插件中工作?

c# - 亚马逊产品广告 API 签名问题

c# - Entity Framework 中 .SqlQuery() 方法的 params 参数是什么?

c# - 旋转 log4net 不会重写相同的日志文件