Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 让log4net使用配置数据的应用程序配置文件_C#_Logging_Log4net - Fatal编程技术网

C# 让log4net使用配置数据的应用程序配置文件

C# 让log4net使用配置数据的应用程序配置文件,c#,logging,log4net,C#,Logging,Log4net,我想在application.config文件中存储log4net配置数据。根据我对文件的理解,我做了以下工作: 添加对log4net.dll的引用 在AssemblyInfo.cs中添加以下行: [assembly: log4net.Config.XmlConfigurator(Watch = true)] 按如下方式初始化记录器: private static readonly ILog log = LogManager.GetLogger(typeof(frmWizard)); 我

我想在application.config文件中存储log4net配置数据。根据我对文件的理解,我做了以下工作:

  • 添加对log4net.dll的引用

  • 在AssemblyInfo.cs中添加以下行:

    [assembly: log4net.Config.XmlConfigurator(Watch = true)]
    
  • 按如下方式初始化记录器:

    private static readonly ILog log = LogManager.GetLogger(typeof(frmWizard));
    
  • 我的app.config中有以下代码:

  • 
    
    但是,当我运行应用程序时,控制台上出现以下错误:

    找不到名为[Consoleappender]的附加程序

    如何让log4net从配置文件读取设置


    谢谢

    您是否尝试将
    configsection
    处理程序添加到app.config?e、 g


    在configSections元素中为app.config添加一行

    
    
    然后稍后添加log4Net部分,但将其委托给其他地方的实际log4Net配置文件

    
    
    在应用程序代码中,当您创建日志时

    private static ILog GetLog(string logName)
    {
        ILog log = LogManager.GetLogger(logName);
        return log;
    }
    

    根据问题中显示的配置,只配置了一个appender,名为“EventLogAppender”。但是在根目录的配置中,作者引用了一个名为“ConsoleAppender”的appender,因此出现了错误消息。

    所有appender名称都必须反映在根目录部分。

    在您的例子中,appender名称是EventLogAppender,但在配置log4net的
    中。

    我完全支持@Charles Bretana的回答。但是,如果它不工作,请确保只有一个
    元素,并且
    configSections
    是根元素的第一个子元素:

    configsections
    必须是
    app.Config
    配置后的第一个元素:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <section name="log4net"  type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
      </configSections>
      <!-- add log 4 net config !-->
      <!-- add others e.g. <startup> !-->
    </configuration>
    
    
    
    你的app.config中有什么代码?请注意:显示的
    app.config
    设置显然是正确的,除了
    事件日志附加器
    部分中命名,以及
    控制台Pender
    部分中命名,两者不匹配。见@Konstantin的答案。另外,对于不熟悉log4net的其他人,请使用这个问题来学习如何使用它-注意,您可能需要一种不同于此处的appender类型-例如
    type=“log4net.appender.FileAppender,log4net”
    (它附加到一个文件,而不是Windows事件日志)。另外,我还缺少
    [assembly:log4net.Config.xmlconfigulator(ConfigFile=“log4net.Config”,Watch=true)]
    特别是ConfigFile=“log4net.Config”。这是键:是根元素的第一个子元素
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <section name="log4net"  type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
      </configSections>
      <!-- add log 4 net config !-->
      <!-- add others e.g. <startup> !-->
    </configuration>