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

Why doesn't my log4net appender create a file each day in year-month-day structure

我正在尝试让 log4net 登录到特定文件夹结构中的文件。 [日志文件夹]/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 来解决这个问题?

试试这个。

<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。

我解决了,但我必须感谢@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>