如何使用log4net配置多个日志记录配置?

时间:2014-12-08 14:55:45

标签: c# log4net log4net-configuration

我正在为多个日志文件使用以下app.config设置。以下是我的app.config设置。但是当我使用" LogFileAppender"将日志写入文件的设置,它还将日志写入控制台

<log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <File value="C:\File1.log" />
    <AppendToFile value="true" />
    <rollongStyle  value="Composite" />
    <maximumFileSize value="200MB" />
    <layout type="log4net.Layout.PatternLayout">
        <ConversionPattern value="%date %messge%newline"/>
    </layout>
    </appender>

    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
        <File value="C:\File2.log" />
        <AppendToFile value="true" />
        <rollongStyle  value="Date" />
        <maximumFileSize value="100MB" />
        <layout type="log4net.Layout.PatternLayout">
            <ConversionPattern value="%date %messge%newline"/>
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <acceptOnMatch value="true" />
            <levelMin value="INFO" />
        </filter>
        <filter type="log4net.Filter.LevelRangeFilter">
            <acceptOnMatch value="true" />
            <levelMin value="FATAL" />
        </filter>
    </appender>

    <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
    <mapping>
        <level value ="ERROR"/>
        <foreColor value ="Red"/>
    </mapping>
    <mapping>
        <level value ="WARN"/>
        <foreColor value ="Yellow"/>
    </mapping>
    <layout type="log4net.Layout.PatternLayout">
        <ConversionPattern value="%date %messge%newline"/>
    </layout>
    </appender>
    <root>
        <level value="ALL" />
        <appender-ref ref="LogFileAppender" />
        <appender-ref ref="RollingFile" />
        <appender-ref ref="ColoredConsoleAppender" />
    </root>
</log4net>

在C#代码中,我使用以下方法调用。

    private static readonly log4net.ILog ilogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    log4net.Config.XmlConfigurator.Configure();

问题:

如何在使用上述app.config文件使用LogFileAppender时限制控制台日志记录?

2 个答案:

答案 0 :(得分:1)

在根记录器和ColoredConsoleAppender之间的配置中添加ForwardingAppender,以便获得此配置

  • root - &gt; LogFileAppender
  • root - &gt; RollingFile
  • root - &gt; ForwardingAppender - &gt; ColoredConsoleAppender

然后在ForwardingAppender中添加一个过滤器,该过滤器只允许传递不是来自您不想要的应用程序的事件; LoggerMatchFilter是一个好主意,因为您可以排除源自所需应用程序命名空间的记录器。

答案 1 :(得分:0)

我通过修改app.config找到了解决方案。

<logger name = "FileLogger" additivity="false">
   <level value="ALL" />
   <appender-ref ref="LogFileAppender" />
</logger>

<root>
   <level value="ALL"/>
   <appender-ref ref="RollingFile"/>
   <appender-ref ref="RollingFileAppender" />
   <appender-ref ref="ColoredConsoleAppender" />
</root>

在C#代码中,显式调用LogFileAppender,如下所示

private static readonly log4net.ILog ilogger = log4net.LogManager.GetLogger("FileLogger");