2011-02-01 103 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>