为什么我的log4net appender每天都在以年 - 月 - 日结构创建文件

时间:2018-04-03 12:18:38

标签: log4net log4net-configuration

我试图让log4net登录到特定文件夹结构中的文件。 [logfolder] /year/month/day_file.log

使用我现在的配置,初始日志文件是完美的。它会创建年份和月份文件夹,并以正确的文件开头。 问题是它不会在第二天在我想要的结构中创建新文件,但它会通过将新日期附加到第一个日志文件名来创建新文件。如您所见,它现在也不会创建所需的月份文件夹。

我现在得到的是:

└───2018
    └───03
            28-03-2018_myLogFile.log
            28-03-2018_myLogFile.log28-03-2018
            28-03-2018_myLogFile.log29-03-2018
            28-03-2018_myLogFile.log30-03-2018
            28-03-2018_myLogFile.log31-03-2018
            28-03-2018_myLogFile.log01-04-2018
            28-03-2018_myLogFile.log02-04-2018

但是我需要它:

└───2018
    ├───03
    │       28-03-2018_myLogFile.log
    │       29-03-2018_myLogFile.log
    │       30-03-2018_myLogFile.log
    │       31-03-2018_myLogFile.log
    │
    └───04
            01-04-2018_myLogFile.log
            02-04-2018_myLogFile.log
            03-04-2018_myLogFile.log

我现在的配置是:

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

我做错了什么?或者我应该通过编写自己的appender来解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

试试这个。

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
  <file type="log4net.Util.PatternString" value="App_Data/log/%date{yyyy}/%date{MM}/" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <staticLogFileName value="false" />
  <datePattern value="dd-MM-yyyy'_myLogFile.log'" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger %M - %message%newline" />
  </layout>
</appender>

我更改了file typedatePattern值,并添加了一行以设置staticLogFileName false。

答案 1 :(得分:1)

我解决了它,但我必须赞扬@sgmoore,尽管答案还不完整。 以下解决方案在../log/yyyy/MM/dd-MM-yyyy_myLogFile.log结构中创建文件。这个版本比@sgmoore提议的版本更好。

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
  <file type="log4net.Util.PatternString" value="App_Data/log/" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <staticLogFileName value="false" />
  <datePattern value="yyyy/MM/dd-MM-yyyy'_myLogFile.log'" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger %M - %message%newline" />
  </layout>
</appender>