2011-02-01 105 views
2

我正在設置log4net並希望在「debug.log」中寫入調試消息,在「info.log」中寫入信息消息等等。配置log4net根據日誌級別寫入不同的文件

爲此,我用幾個附加目的地,如:

<appender name="DebugLogger" type="log4net.Appender.RollingFileAppender"> 
    <file value="..\Logs\Debug.log" /> 
    <threshold value="DEBUG" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="1MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 

和INFO類似的,WARN和ERROR級別。這工作正常,但看起來像很多額外的工作,因爲所有這些appender只有在閾值(調試或警告等)和文件名(debug.log或warn.log等)不同,只有差異

有沒有更好的方法實現我的目標?也許像首先宣佈「base appenders」一樣。

(在一個單獨的注意 - 如果在NLOG是不可能在log4net的,但可能的話,我會很感激知道爲好)

謝謝!

回答

3

好吧,這是不可能在log4net - 只是想要結束這個問題。

我檢查了NLOG不過,顯然它很容易出現(參見配置$level變量):

<?xml version="1.0" encoding="utf-8" ?> 
<nlog> 
    <variable name="logDirectory" value="${basedir}\..\Logs"/> 
    <targets> 
     <target name="file" type="File" fileName="${logDirectory}\${level}.log" /> 
    </targets> 
    <rules> 
     <logger name="*" minlevel="Debug" writeTo="file" /> 
    </rules> 
</nlog>