log4net可以在yyyy \\ MM \\ ddMMyyyy_file.log结构中创建日志文件吗?

时间:2017-11-01 07:55:29

标签: c# log4net app-config

我正在尝试让log4net在文件夹结构中创建它的日志文件,但到目前为止我还没有成功。

我想要完成的是log4net创建这样的日志文件:

..\log\2017\10\30-10-2017_eva360Recorder.log
..\log\2017\10\31-10-2017_eva360Recorder.log
..\log\2017\11\01-11-2017_eva360Recorder.log
..\log\2017\11\02-11-2017_eva360Recorder.log

在我的app.config中,我现在有以下内容:

  <!-- Log4net Logging Setup -->
  <log4net>
    <root>
      <level value="ALL" />
      <appender-ref ref="LogFileAppender" />
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
      <file type="log4net.Util.PatternString" value="log\\%date{yyyy}\\%date{MM}\\%date{dd-MM-yyyy}_eva360Recorder.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <maxDateRollBackups value="60" />
      <datePattern value="dd-MM-yyyy" />
      <preserveLogFileNameExtension value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger %M - %message%newline" />
      </layout>
    </appender>
  </log4net>

然而,这导致以下结果:

d:\Eva360\Recorder\log\2017\10\31-10-2017_eva360Recorder.log
d:\Eva360\Recorder\log\2017\10\31-10-2017_eva360Recorder31-10-2017.log

如你所见,这不是我想要的。它没有创建月份文件夹(.. \ 2017 \ 11 ..),也没有更改日志文件的名称,但在文件名中添加了日期。

我想要的甚至可能吗? 如果是这样,我该怎么做? 而且重要的是,这可以在log4net的文档中找到?

1 个答案:

答案 0 :(得分:0)

我意识到这个猜想,而不是一个明确的答案,但这可能是通过使用自定义log4net appender来实现的。请参阅log4net SDK中的IAppender

Google充斥着关于创建自定义log4net appender的文章,因此无需在此处重复。