2016-02-26 54 views
0

我嘗試使用log4net的...log4net的記錄器類水平

我安裝我的新追加程序

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
    <file value="C:\Logs\ServiceLayer.log" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Composite" /> 
    <datePattern value="_yyyy.MM.dd.lo\g" /> 
    <maximumFileSize value="5MB" /> 
    <maxSizeRollBackups value="10" /> 
    <PreserveLogFileNameExtension value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <!-- <conversionPattern value="%level %thread %logger - %message%newline" /> --> 
     <conversionPattern value="%d{yyyy-MM-dd HH:mm:ss.fff} %5level [%thread][%property{bms.log.username}::%property{bms.log.businessRequest}(%property{bms.log.activityLogID})] - %message%newline" /> 
    </layout> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
</appender> 
<appender name="PerfFile" type="log4net.Appender.RollingFileAppender"> 
    <file value="C:\Logs\Perf.log" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Composite" /> 
    <datePattern value="_yyyy.MM.dd-HH-mm.lo\g" /> 
    <maximumFileSize value="5MB" /> 
    <maxSizeRollBackups value="24" /> 
    <PreserveLogFileNameExtension value="false" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <!-- <conversionPattern value="%level %thread %logger - %message%newline" /> --> 
     <conversionPattern value="%d{yyyy-MM-dd HH:mm:ss.fff} %5level [%thread][%property{bms.log.username}::%property{bms.log.businessRequest}(%property{bms.log.activityLogID})] - %message%newline" /> 
    </layout> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
</appender> 

的PERF附加器是一個性能記錄器分離到一個單獨的日誌新的appender我加...

我還設置了一個BufferForwardingAppender

<appender name="BMSDefaultAppender" type="log4net.Appender.BufferingForwardingAppender"> 
<bufferSize value="128" /> 
<lossy value="false" /> 
<evaluator type="log4net.Core.LevelEvaluator"> 
    <threshold value="WARN" /> 
</evaluator> 
<appender-ref ref="RollingFile" /> 

從那裏,我把我的根

<root> 
    <level value="ERROR" /> 
    <appender-ref ref="BMSDefaultAppender" /> 
</root> 

一旦我有這個設置,我得到登錄自己的滾動日誌文件中的錯誤,但是我想捕捉一些信息電平數據寫入我的PERF文件...

<logger name="BMS.LTD.Activity.Workflow" additivity="false"> 
    <level value="INFO" /> 
    <appender-ref ref="PerfFile" /> 
</logger> 
<logger name="BMS.LTD.Activity.Workflow.Rules" additivity="false"> 
    <level value="WARN" /> 
    <appender-ref ref="PerfFile" /> 
</logger> 
<logger name="BMS.LTD.Persistence.DataSourceDataProviders" additivity="false"> 
    <level value="INFO" /> 
    <appender-ref ref="PerfFile" /> 
</logger> 
<logger name="BMS.LTD.Persistence.DataSourceDataProviders.DataSourceDataCache" additivity="false"> 
    <level value="WARN" /> 
    <appender-ref ref="PerfFile" /> 
</logger> 

我現在把我的信息,並在我的逆足日誌警告,但我也得到我錯誤那裏,是有可能讓我在我的主要錯誤日誌和我的信息水平,我PERF日誌?

回答

1

要控制日誌事件進入的每個文件,添加LevelRangeFilters到您的appender:

<!-- log error and above - add to the RollingFile appender config --> 
<filter type="log4net.Filter.LevelRangeFilter"> 
    <levelMin value="ERROR"/> 
    <levelMax value="FATAL"/> 
</filter> 

<!-- log INFO and below - add to the PerfFile appender config --> 
<filter type="log4net.Filter.LevelRangeFilter"> 
    <levelMin value="DEBUG"/> 
    <levelMax value="INFO"/> 
</filter> 
+0

是爲每個單獨的類記錄器,而不是附加器這可能待辦事項?我希望所有我沒有指定的所有類都能夠登錄到RollingFile上的信息... – Nim

+0

不幸的是,您不能將過濾器應用於記錄器,正如您所看到的,只有一個級別的屬性,其中「Defines記錄器的日誌記錄級別,此記錄器只接受處於此級別或更高級別的事件。「 – stuartd