2010-12-09 81 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屬性是用來告訴附加器刷新緩衝區一定水平的消息被記錄時。通過這種方式,您可以確保將錯誤立即寫入數據庫。