为什么没有在 app.config 中配置 ConsoleAppender 导致日志写入控制台?

Mr.*_*Boy 6 .net c# log4net

在 App.Config 中,我为我的控制台应用程序声明了一个配置部分:

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
Run Code Online (Sandbox Code Playgroud)

并配置一个ConsoleAppender

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
    </layout>
  </appender>
  <root>
    <level value="ALL" />
    <appender-ref ref="ConsoleAppender" />
  </root>
</log4net>
Run Code Online (Sandbox Code Playgroud)

我们还在RollingFile一个日志工具类中声明了一个appender,它是 app-startup 标准代码库的一部分(不容易修改):

        _hierarchy = (Hierarchy)LogManager.GetRepository();
        _rollingFileAppender = new RollingFileAppender();            
        ... //_rollingFileppender options

        _rollingFileAppender.ActivateOptions();
        _hierarchy.Root.AddAppender(_rollingFileAppender);
        _hierarchy.Configured = true;
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序,我看到日志条目写入文件作为预期,但没有数据被写入到控制台。

当我ILog在调试器中检查我的实例时,我根本看不到 appender,Logger.Appenders但我确实将RollingFileAppender实例视为Root.Appenders.

log4net的是我已经习惯了“它就可以工作” -在那里有一些配置不兼容代码添加追加程序,或者一些线我需要LogManager的的app.config?

小智 0

我在 google 上搜索了 log4net,看起来很有趣。我查看了一些网站,我猜这里的输出应该类似于 log4net.config ?那家伙显示按下它,在此处的属性中应该是“复制到输出目录”:“始终复制”。也许您可以以某种方式使用它并将输出打印到控制台。谷歌上有关于它的非常有用的信息,您可以点击这里阅读更多信息。希望我能以某种方式帮助你:)