2010-12-09 56 views
2

我需要配置记录器将消息写入具有不同日志级别的多个appender。log4net ForwardingAppender阈值

例如,我想要RefreshDataService将详细信息记录到TransportFileAppender,并将警告和错误记录到RollingFileAppender

此外,我正在使用缓冲来提高日志记录性能。 我设置FilteredFileLog appender将警告转发到FileLog-> RollingFileAppender。

但对于RefreshDataService记录器,所有日志消息包括调试和Info记录到FileLog。

你能帮我配置RefreshDataService记录器只记录给FileLog的Warn +消息吗?谢谢。

以下摘录自我的log4net配置。

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="${TEMP}\logs\client\${ENV}\client.log" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="4096KB" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %-5level [%property{ENV}] [%property{UID}] %logger - %message%newline" /> 
    </layout> 
</appender> 

<appender name="TransportAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="${TEMP}\logs\client\${ENV}\client.comm.log" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="4096KB" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
    </layout> 
</appender> 


<appender name="DetailedTransportLog" type="log4net.Appender.BufferingForwardingAppender"> 
    <threshold value="DEBUG" /> 
    <bufferSize value="200" /> 
    <appender-ref ref="TransportAppender" /> 
</appender> 

<appender name="FileLog" type="log4net.Appender.BufferingForwardingAppender"> 
    <bufferSize value="20" /> 
    <lossy value="false" /> 
    <appender-ref ref="RollingFileAppender" /> 
</appender> 

<appender name="FilteredFileLog" type="log4net.Appender.ForwardingAppender"> 
    <threshold value="WARN" /> 
    <appender-ref ref="FileLog" /> 
</appender> 

<logger name="RefreshDataService" > 
    <level value="DEBUG" /> 
    <appender-ref ref="FilteredFileLog" /> 
    <appender-ref ref="DetailedTransportLog" /> 
</logger> 

回答

1

您可以在附加器使用电平范围过滤器:

<filter type="log4net.Filter.LevelRangeFilter"> 
    <levelMin value="WARN" /> 
    <levelMax value="FATAL" /> 
</filter> 
<filter type="log4net.Filter.DenyAllFilter" /> 

我的理解是,Threshold属性是用来告诉附加器刷新缓冲区一定水平的消息被记录时。通过这种方式,您可以确保将错误立即写入数据库。