使用当前类名作为log4net中日志文件夹的名称

时间:2015-09-24 18:49:11

标签: c# .net logging log4net

我创建了一个调度程序项目(使用quartz.net的控制台应用程序),其中包含将要重复执行的几个类(作业)。我使用log4Net创建日志文件,现在每个作业都将它的消息附加到名为scheduler / Scheduler.Info.txt的同一个文件中。我想为每个调度程序作业都有一个不同的文件夹。

我现在拥有的是每一项工作都附加在

scheduler/scheduler/scheduler.Info.txt

我想要的是:

scheduler/SomeJob1/SomeJobJob1.Info.txt
scheduler/SomeJob2/SomeJobJob2.Info.txt
scheduler/SomeJob3/SomeJobJob3.Info.txt

所以,模式是

scheduler/{CLASS NAME}/{CLASS NAME}.Info.txt

我目前的log4net配置:

<log4net>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="SchedulerLogFileInfoAppender" />
    </root>

    <appender name="SchedulerLogFileInfoAppender" type="log4net.Appender.RollingFileAppender" >
      <param name="File" value="c:\Scheduler\Scheduler.Info.log" />
      <param name="AppendToFile" value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />

      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d{dd/MM/yy HH:mm:ss} - %p - %logger - %m%n" />
      </layout>

      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMax value="INFO" />
      </filter>
    </appender>
</log4net>

这是记录消息的工作之一:

 public class SomeJob1: IJob
    {
        private static readonly ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    ...

     private void DoStuff()
     {
         logger.Info("THIS IS A MESSAGE");

         ...
     }
}

0 个答案:

没有答案