从Log4Net LogManager获取Appender

时间:2018-07-12 09:05:35

标签: c# .net logging config log4net

我正在尝试通过log4net用log获取文件的名称,但是我找不到我的Appender。这是我的配置:

<log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="name.log"/>
      <appendToFile value="false"/>
      <maximumFileSize value="10MB"/>
      <maxSizeRollBackups value="0"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %level %thread %logger - %message%newline"/>
      </layout>
    </appender>
    <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
      <mapping>
        <level value="ERROR"/>
        <foreColor value="Red, HighIntensity"/>
      </mapping>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %level %thread %logger - %message%newline"/>
      </layout>
    </appender>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="RollingFileAppender"/>
      <appender-ref ref="ColoredConsoleAppender"/>
    </root>
</log4net>

这是获取追加程序数量的代码:

((Hierarchy)LogManager.GetRepository()).GetAppenders().Length.ToString();

但是它给我0。 日志记录完美运行,因此config可以进行日志记录。您是否有任何想法如何从配置中获取没有附加程序的附加程序或文件名"name.log"?谢谢。

1 个答案:

答案 0 :(得分:1)

是否可以在调用Configure之前获取附加程序?

使用您提供的配置:

int count;
count = LogManager.GetRepository().GetAppenders().Length; // 0
XmlConfigurator.Configure();
count = LogManager.GetRepository().GetAppenders().Length; // 2