配置log4net以根据日志级别写入不同的文件

时间:2011-02-01 13:00:06

标签: logging log4net nlog log4net-configuration

我正在设置log4net并希望在“debug.log”中编写调试消息,在“info.log”中编写信息消息等等。

为此,我使用了几个appender,例如:

<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等)上有所不同

有没有更好的方法来实现我的目标?也许就像首先声明“基础appenders”一样。

(另请注意 - 如果在log4net中不可能,但在NLog中可能,我也很感激知道)

谢谢!

1 个答案:

答案 0 :(得分: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>