2014-10-31 241 views
0

我必須記錄一些方法。在一種方法中,我必須記錄一切。在所有其他方法,我只是記錄異常...... 我已經這樣做了配置:不同級別的log4net日誌記錄

<log4net> 
    <appender name="OneMethodFileAppender" type="log4net.Appender.RollingFileAppender"> 
    ... 

    <filter type="log4net.Filter.PropertyFilter"> 
     <key value="realMethod" /> 
     <stringToMatch value="xxx" /> 
     <acceptOnMatch value="true" /> 
    </filter> 
    </appender> 

    <appender name="WebsiteFileAppender" type="log4net.Appender.RollingFileAppender"> 
    ... 

    <filter type="log4net.Filter.PropertyFilter"> 
     <key value="realMethod" /> 
     <stringToMatch value="xxx" /> 
     <acceptOnMatch value="false" /> 
    </filter> 
    </appender> 

    <root> 
    <appender-ref ref="WebsiteFileAppender"> 
     <threshold value="ERROR" /> 
    </appender-ref> 
    <appender-ref ref="OneMethodFileAppender"> 
     <threshold value="INFO" /> 
    </appender-ref> 
    </root> 
</log4net> 

所以,當我匹配屬性realMethod我應該使用記錄在INFO級別的附加器OneMethodFileAppender;在所有其他情況下,我應該使用在ERROR級別登錄的appender WebsiteFileAppender

我有不同的輸出。 1.當我匹配方法xxx一切正常。我的意思是在正確的日誌中以INFO級別登錄。 2.但是,當我不符合方法xxx時,我在INFO級別登錄這兩個文件和兩個文件。

有什麼建議嗎?

謝謝

回答

1

我會建議使用logger元素來配置你的日誌:

<log4net> 
    <appender name="OneMethodFileAppender" type="log4net.Appender.RollingFileAppender"> 
    ... 
    </appender> 

    <appender name="WebsiteFileAppender" type="log4net.Appender.RollingFileAppender"> 
    ... 
    </appender> 

    <root> 
    <appender-ref ref="WebsiteFileAppender"> 
     <threshold value="ERROR" /> 
    </appender-ref> 
    </root> 
    <logger name="LoggerName1"> 
    <level value="INFO" /> 
    <appender-ref ref="WebsiteFileAppender" /> 
    </logger> 
    <logger name="LoggerName2"> 
    <level value="INFO" /> 
    <appender-ref ref="OneMethodFileAppender" /> 
    </logger> 
</log4net> 

這兩種方法應該,有自己的記錄:

logger = LogManager.GetLogger("logger1");